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

1

У меня есть 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, но вместо обычного браузера он отображает только определенную страницу, обслуживаемую сервером. На данный момент я хочу, чтобы приложение закрылось, когда я закрываю GUI. Для этого я создал маршрут на сервере, который (при вызове) закроет сервер.

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

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

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

Теги:
flask
multithreading
cefpython
wxpython

1 ответ

2
Лучший ответ

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

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

  • 0
    Да, я не знаю, является ли это лучшим способом. Но это обходной путь, и он работает! Спасибо!!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню