Python Tkinter中的GUI状态

问题描述 投票:-1回答:1

编辑:根据评论的反馈进行了一些更改。

我正在尝试使用statusTextF函数在python GUI上显示WAIT / READY消息。

我一开始就定义了绘制GUI的时间。

statusText = True

然后在我希望它等待时调用以下内容:

statusText = False

我在任何使用它的地方都将statusText称为全局变量,并且具有statusTextF函数,如下所示:

def statusTextF():
    if statusText == True:
        statusTitle = tk.Label(root,text="READY")
        statusTitle.config(font=statusFont,bg="light green")
        statusX = 500
        statusY = 450
        statusTitle.place(x=statusX,y=statusY)
        separation = 45
    else:
        statusTitle = tk.Label(root,text="WAIT")
        statusTitle.config(font=statusFont,bg="light red")
        statusX = 500
        statusY = 450
        statusTitle.place(x=statusX,y=statusY)
        separation = 45

虽然我一直都在看'READY'

可能有什么问题?

现在,它什么也没显示,而且我得到淡红色是未知的颜色错误。

python multithreading user-interface tkinter
1个回答
1
投票

这里是如何做自己想做的事的示范。它在主GUI线程和状态更新线程之间不使用Queue进行通信,因为它们之间交换的信息量非常少。相反,它使用threading.Lock控制对它们之间共享的全局变量的访问。请注意,它也隐式地用于保护对separation全局的更新。

使用queue.Queue交换信息应该非常容易实现-如果出于某种原因需要一个信息-因为它们不需要单独的queue.Queue,因为它们在内部实现了“所有必需的锁定语义”。] >

注意:我试图(大部分)遵循Lock使其可读性强-我强烈

建议您阅读(并遵循)。
PEP 8 - Style Guide for Python Code
© www.soinside.com 2019 - 2024. All rights reserved.