QtWebkit和Flask制作原生桌面应用程序

时间:2015-12-16 12:01:36

标签: python python-2.7 flask qtwebkit

我是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_())

1 个答案:

答案 0 :(得分: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()方法启动一个新线程,该线程以异步方式运行服务器并返回给调用者。