将Flask Web应用程序用作Windows应用程序

时间:2016-09-02 14:47:55

标签: python flask

我们有一个使用Flask开发的Web应用程序,它运行在Windows服务器上,客户端连接到它。我们现在有一个用例,希望将服务器和客户端组合到一台笔记本电脑上,以便服务器和客户端代码一起运行并使其显示为本机Windows应用程序。

基本上,我们现在有两个以前没有的要求: 1.必须能够在Python中启动浏览器。 2.必须能够在浏览器窗口关闭时终止Python(Flask)应用程序。

我们在第1项中取得了成功。第2项仍然难以捉摸。我们已经尝试终止werkzeug服务器,但Python代码一直在运行。向那些知道的人寻求帮助。

4 个答案:

答案 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)创建桌面应用程序!

https://pypi.org/project/flaskwebgui/