Skip to main content
 首页 » 编程设计

python之QtWebkit 和 Flask 制作原生桌面应用

2025年05月04日33txw1958

我是 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() 运行 Flask 服务器并且不会返回。

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

from threading import Thread 
 
# ... 
 
app_thread = Thread(target=app.run) 
app_thread.daemon = True 
app_thread.start() 
 
# ... 

start() 方法启动一个异步运行服务器并返回给调用者的新线程。