日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

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

發(fā)布時(shí)間:2025/3/21 python 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 wxpython 日志显示框_wxpython与logging模块结合显示实时日志 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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來(lái)接收日志數(shù)據(jù)

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="開(kāi)始");

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);

# 通過(guò)wxpython的timer類(lèi)實(shí)現(xiàn)測(cè)試日志數(shù)據(jù)

def OnTimerEvent(self,event):

# 檢測(cè)日志,超過(guò)指定日志大小,就清空日志列表

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

self.text.SetValue('');

# 隨機(jī)寫(xiě)入1-20個(gè)測(cè)試數(shù)據(jù)

logging.error(''.join([random.choice(list(u"測(cè)試數(shù)據(jù)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();

總結(jié)

以上是生活随笔為你收集整理的wxpython 日志显示框_wxpython与logging模块结合显示实时日志的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。