我没有关于 CEF 的答案,但我查看了两种将基于 HTML 的桌面应用程序打包到本机外观窗口中的解决方案:
在 Flask 中使用 PySide 非常简单,只需在 Flask app.py 文件附近添加以下脚本即可直接运行:
import os, urllib, sys, time, json
# import PySide
from PySide.QtGui import *
from PySide.QtWebKit import *
from PySide.QtCore import *
# import Flask
from app import app as application
class WebApp(QThread):
def setApplication(self, app, setup_callback):
self.application = app
self.setup_callback = setup_callback
def run(self):
self.setup_callback()
self.application.run(use_debugger=True, debug=True, use_reloader=False, port=5000)
def main():
global web, env
# Init Flask server
webappThread = WebApp()
def setup_callback():
print 'Do something specific here before app start'
webappThread.setApplication(application, setup_callback)
webappThread.start()
# Init QT app
app = QApplication(sys.argv)
# Setup WebView (WebKit)
web = QWebView()
web.resize(992, 800)
web.setWindowTitle('Application Name')
# web.setWindowIcon(QIcon('static/img/icon.png'))
qr = web.frameGeometry()
cp = QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
web.move(qr.topLeft())
web.setUrl('http://127.0.0.1:5000/')
# Bind shut down
def shutdown():
webappThread.quit()
app.aboutToQuit.connect(shutdown)
# Start up
web.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
它会打开一个窗口,其中使用 Webkit 显示您的 HTML。我发现的问题是结果看起来不如现代网络浏览器好,这意味着结果像素化且速度慢。但是,如果这对您来说看起来不错,那么您有一个解决方案;)
我现在正在尝试看看是否可以让 python 与 node-webkit 进行通信,这看起来很有希望。我已经问了一个问题here re this 但我没有得到任何答案。如果您有兴趣,请查看this example。我不能让它工作,但它肯定看起来很有希望。