如何使用 Flask API 更改 Tkinter 标签

Posted

技术标签:

【中文标题】如何使用 Flask API 更改 Tkinter 标签【英文标题】:How to change a Tkinter label using a Flask API 【发布时间】:2021-12-22 11:46:44 【问题描述】:

我有一个带有一些端点的 Flaks API。我使用多处理将它与我的程序并行运行。 Tkinter 以window.mainloop() 开头。 我把它们都分成了自己的类(我不知道这是否会影响到smth)。

我现在想更改我的 tkinter 标签上的标签文本。我正在使用mylabel.config(text="myText") 并想从我的 API 端点调用它(这样的函数:)

myEndpoint(self, newStatus:str):
   self.mylabel.config(text=newStatus)
   return newStatus  

当我的函数由 API 进程运行时,我可以做些什么来更改标签? 感谢您的帮助

编辑: @Bryan Oakley 想要更多信息。这里是:

Window 的所有函数都在另一个文件中的它们自己的类中。我的程序导入它,使用所有需要的参数(窗口大小等)创建一个对象,然后启动它:

from window import window
w = window(Parameters like Size, ...)
w.start()

启动功能只是改变全屏参数并设置一些按钮动作。然后它调用在我的 init

中设置的self.window.mainloop()window = Tk()

我的 Flask API 在另一个文件中也有自己的类并被导入:

from api import flaskApi
api = flaskApi(Port, window object, ...)

我的 api 类设置 Flask 的 init 方法将带有 app.add_url_rule 的 Endpoint 添加到函数 myEndpoint(见上文)。

希望这就是您所需要的,我找不到解决方案,很高兴您的帮助。感谢您的帮助:)

【问题讨论】:

其他进程是否调用myEndpoint?如果是这样,我猜你有一些关于tkinter 东西不可腌制的错误,对吗? 请提供minimal reproducible example。 是的,其他进程可以调用 myEndpoint 并更改标签文本。我将在问题中添加更多信息。希望有一个简单的方法... 【参考方案1】:

经过越来越多的研究,我终于找到了答案。要从另一个进程(这里是我的 Flask API)访问另一个进程(这里是主进程),您需要使用队列或管道 (Queue Documentation)。

此队列(或管道)允许您与另一个进程通信。一个从队列中读取(这里是我的 Tkinter 窗口),一个(或多个)写入其中。也许这可以帮助其他有同样问题的人。

感谢您的帮助:)

【讨论】:

以上是关于如何使用 Flask API 更改 Tkinter 标签的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 Flask-peewee 中的 UserDoesNotExist SELECT 行为 - python & mysql

如何使用tkinter按钮更改变量的值?

如何在 Windows 下更改 Tkinter 中菜单的颜色?

如何在 tkinter.ttk Treeview 上完全更改背景颜色

如何在类python tkinter OOP中使用命令更改按钮的背景?

如何更改文本框的大小,以便它可以使用tkinter和python在UI上水平扩展