我有一个命令行实用程序,可以启动和停止 WxPython 应用程序实例。我在一个线程中启动应用程序,以便我可以继续运行命令以及使用 gui 应用程序。
我的问题是,当我停止应用程序时,控制台会挂起,直到我关注应用程序窗口,然后它才会关闭。我不确定为什么应用程序需要焦点才能退出。
应用程序线程如下所示:
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()
?