2015-09-03 97 views
0

我有一个程序使用Android adb logcat(实时输出)将其输出到多行wxpython GUI框。但同时,我希望用户能够点击窗口并使用“搜索”功能来搜索输出中的字符串。Python多线程实现

到目前为止,我对adob logcat标准输出功能的工作进度框,但当我试图点击窗口冻结和崩溃,我猜这是因为一次只能做1件事?

我已经阅读了一些教程并计划去执行它,但是我只是想知道这是否是实现我的目标的正确想法?

感谢

self.progressBox = wx.TextCtrl(panelLog, style=wx.TE_MULTILINE|wx.TE_READONLY) 

def logcat(self,e): 
    stdout = self.parent.deviceExists() 
    exists = self.parent.exactMatch(stdout, "device") 
    if "device" in str(exists): 
     params = [toolsDir + "\\adb.exe", "logcat"] 
     p = Popen(params, stdout=subprocess.PIPE, bufsize=1) 
     for line in p.stdout: 
      self.progressBox.AppendText(line) 

P.S如果你是一个多线程大师,并希望给我一个手在实现它,我不会说不。

回答

0

基本上你在这里得到的是一个LongRunningTask,对于某些解决方案,请参阅wxPython wiki。我最喜欢的是“有史以来最简单的实现”,因为使用wx.CallAfter来从线程回传到主/ GUI线程。你也会发现一些STDOUT重定向,你应该很好去。

+0

我会试一试并回复你,谢谢! – number12