停止WxPython应用程序';线程的主循环需要窗口焦点

停止WxPython应用程序';线程的主循环需要窗口焦点,python,multithreading,wxpython,wxwidgets,Python,Multithreading,Wxpython,Wxwidgets,我有一个命令行实用程序,可以启动和停止WxPython应用程序实例。我在一个线程中启动应用程序,这样我就可以继续运行命令以及使用gui应用程序 我的问题是,当我停止应用程序时,控制台会挂起,直到我聚焦应用程序窗口,然后它就会关闭。我不知道为什么应用程序需要焦点才能退出 应用程序线程如下所示: class RunAppThread(threading.Thread): def run(self): self.app = wx.App(redirect=False)

我有一个命令行实用程序,可以启动和停止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()

在调用
wx.App.ExitMainLoop
后,使用
wx.WakeUpMainThread
获取主线程以处理事件