一尘不染

与Flask应用程序同时运行GUI

python

我正在尝试围绕我的烧瓶应用程序为办公室中的菜鸟创建一个简单的tkinter GUI窗口。我希望脚本按以下顺序执行这些任务:

  • 启动Flask Web服务器
  • 用一个按钮打开一个tkinter GUI窗口。当按下时,该按钮将打开应用程序的索引页面(例如http://127.0.0.1:5000
  • 关闭tkinter gui窗口时终止flask Web服务器

到目前为止,这是我所拥有的,但是该应用程序独立于tkinter窗口运行,并且在看到gui窗口之前,必须使用crtl + c终止flask应用程序:

from flask_app import app
from tkinter import tk
import webbrowser

class GUI:
    def __init__(self):
        app.run()
        self.btn = tk.Button(root, text='Open in Browser', command:self.open_browser_tab).pack()

    def open_browser_tab(self):
        webbrowser.open(url='http:127.0.0.1:5000', new=2)

if __name__ == '__main__':
    root = tk.Tk()
    GUI(root)
    root.mainloop()

那么如何在应用程序运行时运行流程?


阅读 497

收藏
2021-01-20

共1个答案

一尘不染

选件

flask应用程序阻止了您的GUI。您有两种选择:

  1. 线程/多线程
  2. 单独的应用

多线程

可以编写tkinter具有多个线程的应用程序,但是您必须注意这样做。

  • tkinter 必须在主线程中运行
  • tkinter 不能从主线程以外的任何线程访问或实现

分开的过程

我建议使用该subprocess模块。如果将我们的功能分成两个应用程序,并使用子过程模块启动/停止flask应用程序,我想您将拥有所需的东西。

2021-01-20