gpt4 book ai didi

python - 基于 Flask 的桌面应用程序,与 Chromium 嵌入式框架客户端捆绑在一起

转载 作者:行者123 更新时间:2023-11-28 18:42:39 25 4
gpt4 key购买 nike

我正在尝试开发一个跨平台的、基于 Flask 的桌面应用程序(作为本地服务器),与 Chromium 嵌入式浏览器简单窗口(作为客户端)捆绑在一起。 CEF 客户端是为 Windows 和 Mac 单独实现的,虽然这不是完全跨平台的,但实际上没有需要完成的工作(就目前项目的初始阶段而言)客户端,仅使用 CEF 简单示例中已提供的最少功能。

是否有将两者(客户端和服务器)打包在一起的最佳实践?在开发环境中,一切都按预期工作。启动客户端和服务器由一个单独的 Python 脚本控制,但我想知道是否有更好的解决方案来执行此操作(例如,在客户端使用一些方法来检查服务器是否正在运行,如果它不是...)。我还想知道这是否是开发跨平台桌面应用程序的好方法。也许有一种更好的方法可以将基于 HTML 的桌面应用程序打包到原生窗口中?

最佳答案

我没有关于 CEF 的答案,但我看过两种将基于 HTML 的桌面应用程序打包到原生外观窗口中的解决方案:

  • PySide
  • Node-Webkit

在 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重新这个,但我没有得到任何答案。感兴趣的可以看看this example .我无法让它发挥作用,但它看起来很有希望。

关于python - 基于 Flask 的桌面应用程序,与 Chromium 嵌入式框架客户端捆绑在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24374123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com