Python 即使变量更改,更改按钮单击时的文本颜色也不起作用
我做了一个简单的游戏开始学习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
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)