带有PyQt5和Flask的桌面应用程序:如何使用PyQt的QFileDialog并将结果传递给flask应用程序?

时间:2018-10-16 13:14:07

标签: python flask pyqt pyqt5

我正在尝试使用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))

0 个答案:

没有答案