import wx # import wx.xrc from gui.listctrl import ListCtrl_DLLog import threading, time # import io EVT_DLLOG_APPEND = wx.NewId() class DialogDLLog(wx.Dialog): def __init__(self, parent): wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"控制台日志", pos=wx.DefaultPosition, size=wx.Size(500, 500), style=wx.DEFAULT_DIALOG_STYLE) self.SetSizeHints(wx.DefaultSize, wx.DefaultSize) sizer_global = wx.BoxSizer(wx.VERTICAL) self.textctrl_log = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(427, 381), wx.TE_AUTO_URL | wx.TE_MULTILINE | wx.TE_PROCESS_ENTER | wx.TE_PROCESS_TAB) # self.listctrl_log = ListCtrl_DLLog(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LC_REPORT) sizer_global.Add(self.textctrl_log, 1, wx.ALL | wx.EXPAND, 5) self.SetSizer(sizer_global) self.Layout() self.Centre(wx.BOTH) self.Bind(wx.EVT_CLOSE, self.onClose) def __del__(self): pass def onClose(self, event): self.Hide() def start_logger(self, stdout): threading.Thread(target=self._stdout_thread, name='log_stdout_read_thread', daemon=True, args=(stdout,)).start() def _stdout_thread(self, stdout): while True: time.sleep(0.1) line_text = stdout.readline() while line_text: self.textctrl_log.AppendText(line_text) def append_log(self, event): self.textctrl_log.AppendText(event.data) class DialogDLLogAppendEvent(wx.PyEvent): def __init__(self, data): wx.PyEvent.__init__(self) self.SetEventType(EVT_DLLOG_APPEND) self.data = data # app = wx.App() # # # frame_main = FrameParser(None) # # # # DialogCopyLink(None).Show() # # # frame_main.Show() # app.MainLoop()