Python 根据用户输入更改标签的颜色

Python 根据用户输入更改标签的颜色,python,tkinter,Python,Tkinter,我使用Tkinter创建了一个歌曲猜测程序,用户可以按一个按钮播放歌曲,输入他们认为歌曲是什么,然后在收听和猜测所有歌曲后,按submit。现在,在输入框的右侧,我有一个标签,显示文本“正确”或“不正确”,关于他们是否正确演唱歌曲,是否有办法使文本在正确演唱时变为绿色,在错误演唱时变为红色。我已经尝试了下面代码中列出的一些事情 从播放声音导入播放声音 将tkinter作为tk导入 从tkinter进口* master=tk.tk() 大师头衔(“猜歌游戏”) master.config(bg=“

我使用Tkinter创建了一个歌曲猜测程序,用户可以按一个按钮播放歌曲,输入他们认为歌曲是什么,然后在收听和猜测所有歌曲后,按submit。现在,在输入框的右侧,我有一个标签,显示文本“正确”或“不正确”,关于他们是否正确演唱歌曲,是否有办法使文本在正确演唱时变为绿色,在错误演唱时变为红色。我已经尝试了下面代码中列出的一些事情

从播放声音导入播放声音
将tkinter作为tk导入
从tkinter进口*
master=tk.tk()
大师头衔(“猜歌游戏”)
master.config(bg=“鬼白色”)
def play1():
播放声音(“sickomode.mp3”)
def play2():
播放声音(“onedance.mp3”)
def play3():
播放声音(“uptownfunk.mp3”)
def play4():
播放声音(“shapeofyou.mp3”)
tk.Label(master,text=“Song Guesser”,font=“Verdanda 20下划线粗体”,bg=“ghost white”,fg=“black”).grid(行=0,列=1)
tk.按钮(master,text=“Play Song 1”,command=play1,font=“Verdanda 15 bold”).grid(行=1,列=0)
tk.按钮(master,text=“Play Song 2”,command=play2,font=“Verdanda 15 bold”).grid(行=2,列=0)
tk.按钮(master,text=“Play Song 3”,command=play3,font=“Verdanda 15 bold”).grid(行=3,列=0)
tk.按钮(master,text=“Play Song 4”,command=play4,font=“Verdanda 15 bold”).grid(行=4,列=0)
猜1=tk.条目(master,bg=“鬼白”,fg=“黑”,font=“Verdanda 15”)
猜2=tk.条目(master,bg=“鬼白色”,fg=“黑色”,font=“Verdanda 15”)
猜3=tk.条目(master,bg=“鬼白色”,fg=“黑色”,font=“Verdanda 15”)
猜测4=tk.条目(master,bg=“鬼白色”,fg=“黑色”,font=“Verdanda 15”)
猜1.网格(行=1,列=1)
猜测2.网格(行=2,列=1)
猜3.网格(行=3,列=1)
猜测4.网格(行=4,列=1)
def submit():
s1guess=str(guess1.get()).upper()
如果s1guess==“病态模式”:
打印(“正确”)
状态设置(“正确”)
艾利夫:猜猜看=“病态模式”:
打印(“不正确”)
状态设置(“不正确”)
s2guess=str(guess2.get()).upper()
如果s2guess==“一支舞”:
打印(“正确”)
状态2.设置(“正确”)
艾利夫:猜猜看=“一支舞”:
打印(“不正确”)
状态2.设置(“不正确”)
s3guess=str(guess3.get()).upper()
如果s3guess==“住宅区恐惧”:
打印(“正确”)
状态3.设置(“正确”)
埃利夫:猜猜看=“住宅区恐惧”:
打印(“不正确”)
状态3.设置(“不正确”)
s4guess=str(guess4.get()).upper()
如果s4guess==“你的形状”:
打印(“正确”)
状态4.设置(“正确”)
埃利夫·斯奎斯=“你的形状”:
打印(“不正确”)
状态4.设置(“不正确”)
status=StringVar()
status2=StringVar()
status3=StringVar()
status4=StringVar()
scolor=StringVar()
s2color=StringVar()
s3color=StringVar()
s4color=StringVar()
tk.Label(master,textvariable=status,font=“Verdanda 15 bold”,fg=scolor.get()).grid(行=1,列=2)
tk.Label(master,textvariable=status2,font=“Verdanda 15 bold”,fg=s2color.get()).grid(行=2,列=2)
tk.Label(master,textvariable=status3,font=“Verdanda 15 bold”,fg=s3color.get()).grid(行=3,列=2)
tk.Label(master,textvariable=status4,font=“Verdanda 15 bold”,fg=s4color.get()).grid(行=4,列=2)
tk.按钮(master,text=“提交分数”,command=Submit).grid(行=5,列=1)
master.mainloop()

我看到的主要区域是底部的标签集。按照目前的方式,我已经成功地使其正常工作,但scolor变量的默认值只是“”而不是颜色,因此代码无法运行使用配置方法:

。。。
label.configure(前景=“[所需颜色]”)
...

您需要使用
Label.config(fg=…)
来更改
标签的前景色,因此您需要为结果标签分配变量:

标签1=tk.Label(master,font=“Verdanda 15 bold”,宽度=10) 标签2=tk.标签(主标签,font=“Verdanda 15粗体”,宽度=10) 标签3=tk.标签(主标签,font=“Verdanda 15粗体”,宽度=10) 标签4=tk.标签(主标签,font=“Verdanda 15粗体”,宽度=10) 标签1.网格(行=1,列=2) 标签2.网格(行=2,列=2) 标签3.网格(行=3,列=2) 标签4.网格(行=4,列=2)
然后修改
submit()
,根据猜测结果更改这些标签的前景色:

def submit():
def检查(猜测、预期、标签):
如果guess.get().strip().upper()=应为:
label.config(text=“Correct”,fg=“green”)
其他:
label.config(text=“不正确”,fg=“红色”)
检查(猜测1,“病态模式”,标签1)
检查(猜测2,“一支舞”,标签2)
检查(猜测3,“住宅区恐惧”,标签3)
检查(猜测4,“你的形状”,标签4)
请注意,您根本不需要这些
statusX
sXcolor
变量