2013-03-19 65 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