我正在尝试使用PyQt5和Flask构建桌面应用程序。我想有一些机制可以从flask应用程序中选择目录。这不可能直接通过Flask实现,所以我想使用PyQt的QFileDialog。但是,这不能在Flask中调用,因此我试图确定如何使Flask与GUI进行最佳通信? 我已经读过有关可能使用套接字或任务队列(例如Celery)的信息,但不确定哪个是最佳解决方案?
from PyQt5.QtCore import QUrl, QThread
from PyQt5.QtWidgets import *
from PyQt5.QtWebEngineWidgets import QWebEngineView
from flask import Flask, render_template, request, jsonify
import os
class FlaskThread(QThread):
def __init__(self, application):
QThread.__init__(self)
self.application = application
def __del__(self):
self.wait()
def run(self):
self.application.run(port=PORT)
app = Flask(__name__)
@app.route('/')
def index():
return render_template("index.html")
file = str(QFileDialog.getExistingDirectory(None, "Select Directory"))
def provide_GUI_for(application):
qtapp = QApplication(sys.argv)
webapp = FlaskThread(application)
webapp.start()
qtapp.aboutToQuit.connect(webapp.terminate)
webview = QWebEngineView()
webview.load(QUrl(ROOT_URL))
webview.show()
return qtapp.exec_()
if __name__ == '__main__':
sys.exit(provide_GUI_for(app))