首页 > 解决方案 > 使用变量实时更新标签前景色

问题描述

我在研究这个特定任务时运气不佳。我想根据数字是负数还是正数来更新文本的前景色。如果数字为负数,则以红色文本显示。如果是阳性,则显示为绿色。

我通过比较两个变量来检查它是否为负数。如果大于或等于最小值,则它是一个正数,反之亦然。这可能令人困惑,但如果您总共有 30 个但最小值为 35,则myvar为 -5。

将 if 语句放在标签上方显然只会在第一次工作(当你启动程序时)

if total.get() >= minimum.get():
    Label(root, textvariable=myvar, fg="green")
if total.get() < minimum.get(): # or an else statement here
    Label(root, textvariable=myvar, fg="red")

我也尝试过定义标签并运行一个函数来配置前景色,但我认为我的语法不太正确,或者我为这种方法跳过了太多步骤。老实说,我不觉得我需要一些复杂的东西,因为我只想更新一件事。

test_label.configure(foreground="green") #or test_label.config(fg="green")?

现在我想知道是否可以使用变量(类似于在标签中更新文本变量),但我没有成功。

my_fg = tk.StringVar()
my_fg.set("green") #otherwise the game won't open

Label(root, textvariable=myvar, fg=my_fg.get())

def change_fg():
    if total.get() >= minimum.get():
        my_fg.set("green")
    else:
        my_fg.set("red")

最后一个示例没有返回任何错误,但它也不起作用。有人知道正确的语法/方法吗?如果可能的话,尤其是直接/简单的方式。

为了以防这些信息有帮助或很重要,我使用按钮来增加和减少总变量和最小变量,并且这个示例中的 change_fg() 函数实际上只是我已经为这些按钮拥有的函数的一部分。(假设我可以这样做)

标签: pythontkinter

解决方案


推荐阅读