Закрытие приложения wxPython в отдельном потоке приводит к появлению предупреждения окна

У меня есть сервер Flask-SocketIO, который инициализирует графический интерфейс в отдельном потоке.

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)

Графический интерфейс в основном является примером cefpthon3, в котором используется wxPython, но вместо обычного браузера он отображает только определенную страницу, обслуживаемую сервером. На данный момент я хочу, чтобы все приложение закрылось, когда я закрываю графический интерфейс. Для эффекта я создал маршрут на сервере, который (при вызове) отключит сервер.

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

И этот маршрут вызывается, когда перед закрытием wxPython. Однако эта ошибка появляется до выключения сервера:

Может кто-нибудь помочь мне решить или скрыть это?

1 ответ

Решение

wxPython почти всегда должен быть основным потоком, поэтому, скорее всего, вы видите эту ошибку, которая возникает на wxIsMainThread, Одним из несколько простых решений было бы запустить wxPython в качестве основного потока / приложения и запустить Flask в потоке.

Я думаю, что это будет работать лучше. Вы можете попросить группу Google wxPython найти другие обходные пути.

Другие вопросы по тегам