Jon Lavercombe
Jon Lavercombe

Reputation: 37

TKInter Python checkbutton state

I am trying to do some work on a text file if certain checkbuttons are checked.

"Populate CheckBoxes"
Label(master, text="Pick at least one index:").grid(row=4, column=1)
Checkbutton(master, text="Short",variable=var1).place(x=5,y=60)
Checkbutton(master, text="Standard",variable=var2).place(x=60,y=60)
Checkbutton(master, text="Long",variable=var3).place(x=130,y=60)

Calling

print("Short: %d,\nStandard: %d,\nLong: %d" % (var1.get(), var2.get(), 
      var3.get()))

prints out 0 or 1 for each variable but when I am trying to use that value to do something it does'nt seem to call the code.

if var2.get(): <--- does this mean if = 1?
    Do something

Upvotes: 1

Views: 2905

Answers (1)

Nae
Nae

Reputation: 15355

In below example var.get()'s value is printed in command prompt if it's False and updates the lbl['text'] if it's True:

import tkinter

root = tkinter.Tk()

lbl = tkinter.Label(root)
lbl.pack()

var = tkinter.BooleanVar()

def update_lbl():
    global var
    if var.get():
        lbl['text'] = str(var.get())
    else:
        print(var.get())

tkinter.Checkbutton(root, variable=var, command=update_lbl).pack()

root.mainloop()

But below code never prints as "0" and "1" are both True:

import tkinter

root = tkinter.Tk()

lbl = tkinter.Label(root)
lbl.pack()

var = tkinter.StringVar()

def update_lbl():
    global var
    if var.get():
        lbl['text'] = str(var.get())
    else:
        print(var.get())

tkinter.Checkbutton(root, variable=var, command=update_lbl).pack()

root.mainloop()

Upvotes: 1

Related Questions