【问题标题】:Closing wxPython app on a separated thread runs into a window alert在单独的线程上关闭 wxPython 应用程序会遇到窗口警报
【发布时间】:2018-07-31 10:31:06
【问题描述】:

我有一个 Flask-SocketIO 服务器,它在一个单独的线程中初始化一个 GUI。

if __name__ == '__main__':

    if len(sys.argv) > 1 and sys.argv[1] == 'dev':
        print "Running Flask-SocketIO on dev mode"
    else:
        print "Running Flask-SocketIO on production mode"
        print 'Running Graphical User Interface...'
        thread.start_new_thread(display_react.main, ())
        print 'Initializing server'

    socketio.run(app, debug=False)

GUI 基本上是使用 wxPython 的 cefpthon3 示例,但不是普通的浏览器,它只显示服务器提供的特定页面。目前,我希望在关闭 GUI 时关闭整个应用程序。为了达到这个效果,我在服务器上创建了一个路由(调用时)将关闭服务器。

@app.route('/shutdown', methods=['GET'])
def shutdown():
    server_request.shutdown()
    socketio.stop()
    print "Trying to close..."
    return 'Server shutting down...'

并且在关闭 wxPython 之前调用此路由。 但是,此错误出现在服务器关闭之前:

谁能帮我解决或隐藏这个问题?

【问题讨论】:

    标签: python multithreading flask wxpython cefpython


    【解决方案1】:

    wxPython 几乎总是必须是主线程,这很可能是您在wxIsMainThread 上看到此错误的原因。一种比较简单的解决方法是将 wxPython 作为主线程/应用程序启动,并让它在线程中运行 Flask。

    我认为这样会更好。不过,您可以向 wxPython Google 小组询问其他解决方法。

    【讨论】:

    • 是的,我不知道这是否是最好的方法。但这肯定是一种解决方法,并且有效!谢谢!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    • 2014-11-20
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多