Как заставить переменную Checkbutton работать и показывать некоторые кнопки на экране? - PullRequest
0 голосов
/ 17 апреля 2019
from Tkinter import *
window = Tk()
CheckVar1 = IntVar()
cbttn = Checkbutton(text="Caps?", variable = CheckVar1, \
onvalue = 1, offvalue = 0, height=5, \
width = 20)
cbttn.grid(row=3, column=0)
while True:
    if CheckVar1 == 0:
        a = Button(text="a").grid(column=1)
        b = Button(text="b").grid(column=1)
        c = Button(text="c").grid(column=1)
        d = Button(text="d").grid(column=1)
        e = Button(text="e").grid(column=1)
        f = Button(text="f").grid(column=1)
        g = Button(text="g").grid(column=1)
    if CheckVar1 == 1:
        A = Button(text="A").grid(column=1)
    window.mainloop()#makes everything work

Я хочу узнать, как заставить отображаться разные кнопки в зависимости от значения CheckVar1. У меня нет ошибок, но код, с которым я хочу работать, это if CheckVar1 == 0: и if CheckVar1 == 1.

1 Ответ

1 голос
/ 17 апреля 2019

Используйте метод trace на вашем IntVar.

from Tkinter import *
window = Tk()
CheckVar1 = IntVar()
cbttn = Checkbutton(text="Caps?", variable = CheckVar1, onvalue = 1, offvalue = 0, height=5,width = 20)
cbttn.grid(row=3, column=0)

def trace_method(*args):
    print ("Changed")
    if CheckVar1.get() == 0: #note that you need to call `get` method on the IntVar
        a = Button(text="a").grid(column=1)
        b = Button(text="b").grid(column=1)
        c = Button(text="c").grid(column=1)
        d = Button(text="d").grid(column=1)
        e = Button(text="e").grid(column=1)
        f = Button(text="f").grid(column=1)
        g = Button(text="g").grid(column=1)
    elif CheckVar1.get() == 1:
        A = Button(text="A").grid(column=1)

CheckVar1.trace("w",trace_method)

window.mainloop()
...