如何使用 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
如何在 Windows 下更改 Tkinter 中菜单的颜色?
如何在 tkinter.ttk Treeview 上完全更改背景颜色