Python 即使变量更改,更改按钮单击时的文本颜色也不起作用

Python 即使变量更改,更改按钮单击时的文本颜色也不起作用,python,tkinter,Python,Tkinter,我做了一个简单的游戏开始学习python,你按下一个按钮,颜色就会改变。我尝试过执行这个,但是它没有改变颜色,即使变量改变了。这有点乱,我知道,但我还在学习 我已经清理了一点代码 from random import randint from tkinter import * color_numb = randint(1,3) status = True color = "Blue" root = Tk() if True: if color_numb == 1: c

我做了一个简单的游戏开始学习python,你按下一个按钮,颜色就会改变。我尝试过执行这个,但是它没有改变颜色,即使变量改变了。这有点乱,我知道,但我还在学习

我已经清理了一点代码

from random import randint
from tkinter import *

color_numb = randint(1,3)
status = True
color = "Blue"
root = Tk()

if True:
    if color_numb == 1:
        color = "Blue"
    if color_numb == 2:
        color = "Orange"
    if color_numb == 3:
        color = "Red"
    T = Text(root, height=2, width=30, fg=color)

def ColorC():
    color_numb = randint(1,3)
    if color_numb == 1:
        color = "Blue"
    if color_numb == 2:
        color = "Orange"
    if color_numb == 3:
        color = "Red"
    T.delete(0.0, END)
    T.insert (END, (color))
    print((color_numb), (color))

buttonA = Button(root, text = 'Change the colour!', command=ColorC)
T.pack()
buttonA.pack()

代码的问题在于,您实际上没有更改文本小部件的颜色。您只需设置一次颜色:

之后,当您单击颜色时,您将尝试更改颜色(尽管您只是修改本地
颜色
变量,而不是全局变量),但您从未实际更新文本小部件的颜色

要更改小部件的颜色,您需要使用
configure

# reconfigure widget color
T.configure(foreground=color)

# delete existing text
T.delete(0.0, END)

# set new text
T.insert(END, color)

ColorC()
内部的局部变量
color
与全局变量
color
完全无关。该函数中的
global color
会使它们都引用相同的内容。我会尝试一下,谢谢。因为我添加了global,所以第6行第4列的语法无效
# reconfigure widget color
T.configure(foreground=color)

# delete existing text
T.delete(0.0, END)

# set new text
T.insert(END, color)