欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

wxpython 日志显示框_wxpython与logging模块结合显示实时日志

发布时间:2025/3/21 python 25 豆豆
生活随笔 收集整理的这篇文章主要介绍了 wxpython 日志显示框_wxpython与logging模块结合显示实时日志 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1.[代码][Python]代码

#!/usr/bin/env python

#-*- coding:utf-8 -*-

__author__ = "wangaibo168@163.com"

import sys;

reload(sys);

sys.setdefaultencoding("utf-8");

import wx;

import random;

import logging;

import time;

# 自定义日志Handler来接收日志数据

class MyLogHandler(logging.Handler):

def __init__(self,obj):

logging.Handler.__init__(self);

self.Object = obj;

def emit(self,record):

if record.levelno

tstr = time.strftime('%Y-%m-%d_%H:%M:%S.%U');

self.Object.AppendText("[%s][%s] %s\n"%(tstr,record.levelname,record.getMessage()));

class MyFrame(wx.Frame):

def __init__(self):

wx.Frame.__init__(self,parent=None,title="日志窗体",pos=(100,100),size=(500,400));

self.buildUI();

def buildUI(self):

self.box1 = wx.BoxSizer(wx.HORIZONTAL);

self.text = wx.TextCtrl(parent=self,style=wx.TE_AUTO_SCROLL|wx.TE_MULTILINE);

self.box1.Add(self.text,1,wx.ALL|wx.EXPAND,5,5);

self.box2 = wx.BoxSizer(wx.VERTICAL);

self.btn1 = wx.Button(parent=self,label="开始");

self.box2.Add(self.btn1,1,wx.ALL|wx.EXPAND,5,0);

self.btn2 = wx.Button(parent=self,label="停止");

self.box2.Add(self.btn2,1,wx.ALL|wx.EXPAND,5,0);

self.box1.Add(self.box2,0,wx.NORMAL,0,0);

self.SetSizer(self.box1);

self.text.SetEditable(False);

self.btn1.Enable();

self.btn2.Disable();

self.btn1.Bind(wx.EVT_BUTTON,self.OnButton1Event);

self.btn2.Bind(wx.EVT_BUTTON,self.OnButton2Event);

self.timer = None;

handler = MyLogHandler(self.text);

logging.getLogger().addHandler(handler);

# 通过wxpython的timer类实现测试日志数据

def OnTimerEvent(self,event):

# 检测日志,超过指定日志大小,就清空日志列表

if len(self.text.GetValue())>1024:

self.text.SetValue('');

# 随机写入1-20个测试数据

logging.error(''.join([random.choice(list(u"测试数据abcde12345")) for i in xrange(random.randint(1,20))]));

def OnButton1Event(self,event):

if self.timer:

return;

self.timer = wx.Timer(self);

self.Bind(wx.EVT_TIMER,self.OnTimerEvent);

self.timer.Start(1000);

self.btn1.Disable();

self.btn2.Enable();

def OnButton2Event(self,event):

if not self.timer:

return;

self.timer.Stop();

self.timer = None;

self.btn1.Enable();

self.btn2.Disable();

class MyApp(wx.App):

def OnInit(self):

self.win = MyFrame();

self.win.Show(True);

self.SetTopWindow(self.win);

return True;

if __name__ == "__main__":

app = MyApp();

app.MainLoop();

总结

以上是生活随笔为你收集整理的wxpython 日志显示框_wxpython与logging模块结合显示实时日志的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。