Закрытие приложения 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)

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

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

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

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


person Ricardo Goncalves    schedule 31.07.2018    source источник


Ответы (1)


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

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

person Mike Driscoll    schedule 31.07.2018
comment
Да, я не знаю, лучший ли это способ. Но это наверняка обходной путь, и он работает! Спасибо!! - person Ricardo Goncalves; 01.08.2018