我们有一个使用Flask开发的Web应用程序,它运行在Windows服务器上,客户端连接到它。我们现在有一个用例,希望将服务器和客户端组合到一台笔记本电脑上,以便服务器和客户端代码一起运行并使其显示为本机Windows应用程序。
基本上,我们现在有两个以前没有的要求: 1.必须能够在Python中启动浏览器。 2.必须能够在浏览器窗口关闭时终止Python(Flask)应用程序。
我们在第1项中取得了成功。第2项仍然难以捉摸。我们已经尝试终止werkzeug服务器,但Python代码一直在运行。向那些知道的人寻求帮助。
答案 0 :(得分:1)
这是flaskwebgui 的example。
我已经使用 pyinstaller 将 python-flask 应用程序转换为可执行文件。
我使用 Installforge 将构建文件转换为安装程序(安装程序)文件。
答案 1 :(得分:0)
我目前没有Windows客户端,所以我无法准确测试我的建议。
使用 pywinauto ,您可以查看窗口的名称。
您可以构建一个脚本,在后台检查此内容并在未打开请求的浏览器窗口时终止您的Flask应用程序。
from pywinauto.findwindows import find_windows
if not find_windows(best_match='YOURWINDOWNAMEHERE'):
# Do your kill
答案 2 :(得分:0)
在更深入地阅读文档并尝试实现之后,我们找到了以下主要代码来满足目标。
from multiprocessing import Process, freeze_support
def run_browser():
import webbrowser
chrome = webbrowser.get(r'C:\\Program\ Files\ (x86)\\Google\\Chrome\\Application\\chrome.exe --window-size=500,500 --app=%s')
chrome.open('http://localhost:5000/gui')
def run_app():
from app import webapp
webapp.run() #debug=True) #, use_reloader=False)
if __name__ == '__main__':
freeze_support()
a = Process(target=run_app)
a.daemon = True
a.start()
b = Process(target=run_browser)
b.start()
b.join()
答案 3 :(得分:0)
这是使用flaskwebgui更为简单的方法
from flaskwebgui import FlaskUI
app = Flask(__name__)
ui = FlaskUI(app)
ui.run()
flaskwebgui-使用Flask(或Django)创建桌面应用程序!