2013-03-19 64 views
1

我有一個命令行實用程序,用於啓動和停止WxPython應用程序實例。我在一個線程中啓動應用程序,以便我可以繼續運行命令以及使用gui應用程序。從線程停止WxPython應用程序的主循環需要窗口焦點

我的問題是,當我停止應用程序時,控制檯掛起,直到我關注應用程序窗口,然後關閉。我不知道爲什麼應用程序需要重點退出。

該應用程序的線程看起來是這樣的:

class RunAppThread(threading.Thread): 
    def run(self): 
     self.app = wx.App(redirect=False) 
     self.frame = AppWindow(None) 
     self.app.MainLoop() 

    def stop(self): 
     self.app.ExitMainLoop() 

相關的CLI操作是:

def startapp(self): 
    self.app = gui.RunAppThread() 
    self.app.start() 

def stopapp(self): 
    self.app.stop() 
    self.app.join() 

是否有退出主循環而不是調用wx.App.ExitMainLoop()更好的/正確的方法是什麼?

回答

3

在致電wx.App.ExitMainLoop後,使用wx.WakeUpMainThread獲取主線程來處理事件。

+0

這樣做的竅門,謝謝! – Ross 2013-03-19 12:32:45