【问题标题】:QtWebkit and Flask to make native desktop appQtWebkit 和 Flask 制作原生桌面应用程序
【发布时间】:2015-12-16 12:01:36
【问题描述】:

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

想法是:与其在用户浏览器上打开 Flask Web 应用程序,不如在 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_())

【问题讨论】:

    标签: python python-2.7 flask qtwebkit


    【解决方案1】:

    要使 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() 方法启动一个新线程,该线程异步运行服务器并返回给调用者。

    【讨论】:

    猜你喜欢
    • 2012-07-12
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 2011-04-01
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多