2015-09-03 4 views
0

У меня есть программа, которая использует лог-код adb для Android (который выдает в реальном времени), который выводит это в многострочный графический интерфейс wxpython. Однако в то же время я хочу, чтобы пользователь мог щелкнуть по окну и использовать функцию поиска для поиска по выходному сигналу для строки.Реализация многопоточности Python

У меня до сих пор есть функциональность adb logcat stdout для рабочего окна, но когда я пытаюсь щелкнуть по окну, он зависает и падает, я предполагаю, что это происходит из-за того, что он способен делать только одну вещь за раз ?

Я прочитал несколько руководств и планирую, что им нужно это осуществить, но я просто задавался вопросом, правильно ли это было для достижения моей цели?

Благодаря

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 для передачи назад от потока к вашей основной/графической нити. Вы также найдете некоторое перенаправление STDOUT, и вам должно быть хорошо идти.

+0

Я попробую и вернусь к вам, спасибо! – number12

Смежные вопросы