QtWebkit 和 Flask 制作原生桌面应用

QtWebkit and Flask to make native desktop app

我是 python 的新手。我正在寻找通过 QtWebkit 和 Flask 创建桌面应用程序的新方法。

想法是:与其在用户浏览器上打开 Flask 网络应用程序,运行 并在 QtWebkit GUI 上打开它。

我写了下面的代码,但是好像不对。当 Flask 启动时 运行 GUI 将被挂起。

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *
from flask import Flask


app = Flask(__name__)

@app.route("/")
def hello():
    return "<a href='http://127.0.0.1:5000/test'>AA</a><br />Hello World!"

@app.route('/test')
def test():
    return 'test'

pyqt = QApplication(sys.argv)

web = QWebView()


if __name__ == "__main__":

    web.load(QUrl("http://127.0.0.1:5000/"))
    web.show()
    app.run()
    sys.exit(pyqt.exec_())

要使 GUI 处于活动状态并做出响应,其主循环必须 运行。主循环通过 exec_() 调用执行。在您的示例中,控制流永远不会到达此调用,因为 app.run() 运行 是 Fl​​ask 服务器,而不是 return。

GUI 通常需要 运行 在主线程中,因此您最好在自己的线程中启动 Web 应用程序服务器:

from threading import Thread

# ...

app_thread = Thread(target=app.run)
app_thread.daemon = True
app_thread.start()

# ...

start() 方法启动一个新线程,该线程 运行 异步发送服务器并 return 发送给调用者。