在Tkinter中选中复选框后更改标签的内容

时间:2017-04-30 13:23:07

标签: python tkinter

我有一个像这样编码的标签,其中包含在运行程序时设置的文本。

label_text = StringVar()
label = Label(window,textvariable=label_text)
label_text.set("Off")

我也有一个复选框;

var= IntVar()
Check= Checkbutton(window,text = "On",variable = var,onvalue = 1,offvalue = 0)

这些包装都是这样的:

label.pack()
Check.pack(side="left")

选中该复选框后,我希望标签更改为“开”, 这样的事情。

if var.get()==1:
    label_text.set("On")

当我选中复选框时,文本仍处于关闭状态。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

当检查按钮状态发生变化时,有多种方法可以更新标签文本。

一种可能性是使标签和检查按钮共享相同的StringVar,并将检查按钮的onvalue / offvalue设置为" On" /" Off"。这样,当检查按钮的状态发生变化时,标签的文本会自动更新。

from tkinter import StringVar, Tk, Label, Checkbutton

window = Tk()

label_text = StringVar()
label = Label(window, textvariable=label_text)
label_text.set("Off")

check= Checkbutton(window,  text="On", variable=label_text,
                   onvalue="On", offvalue="Off")

label.pack()
check.pack(side="left")

window.mainloop()

如果出于某种原因,您确实希望checkbutton的onvalue / offvalue为0/1,则可以将函数传递给checkbutton的command选项。此函数将根据检查按钮的状态更改标签文本。

from tkinter import StringVar, Tk, Label, Checkbutton, IntVar

def update_label():
    if var.get() == 1:
        label_text.set("On")
    else:
        label_text.set("Off")

window = Tk()

label_text = StringVar()
label = Label(window, textvariable=label_text)
label_text.set("Off")

var = IntVar()
check= Checkbutton(window,  text="On", variable=var,
                   onvalue=1, offvalue=0, command=update_label)

label.pack()
check.pack(side="left")

window.mainloop()