Marvin Lerousseau
Marvin Lerousseau

Reputation: 413

Tkinter: is there a way to check checkboxes by default?

I have this piece of code that will create a simple checkbox :

from Tkinter import *

CheckVar = IntVar()
self.checkbutton = Checkbutton(self.root, text = "Test", variable = CheckVar)

However this checkbox in unchecked by default and I'm searching for a way to check it.

So far I have tried to insert

CheckVar.set(1)

right after CheckVar but it didn't work.

Thanks for your help

Edit : here is my full piece of code. When I run it, the box is still unchecked

from Tkinter import *

class App():
    def __init__(self, root):   
        self.root = root
        CheckVar = IntVar()
        CheckVar.set(1)
        self.checkbutton = Checkbutton(self.root, text = "Test", variable = CheckVar)
        self.checkbutton.grid(row=0, column=0,)


root = Tk()
app = App(root)
root.mainloop()

Upvotes: 35

Views: 67908

Answers (6)

xjcl
xjcl

Reputation: 15309

I am using ttk and I check the ttk.Checkbutton using

self.checkbutton.state(["selected"])

and uncheck it using

self.checkbutton.state(["!selected"])

You can inspect the state using

"selected" in self.checkbutton.state()  # returns True or False

Upvotes: 2

876346209
876346209

Reputation: 13

Thought I'd just post the sample code that worked for me, this creates a checked checkbox.

window1 = tkinter.Tk()
check1 = tkinter.IntVar()

checkbox1 = tkinter.Checkbutton(window1, variable=check1, text="")
checkbox1.grid(row=0, column=0)
checkbox1.select()

Upvotes: 1

Bryan Oakley
Bryan Oakley

Reputation: 385950

Your CheckVar is a local variable. It's getting garbage collected. Save it as an object attribute. Also, you can create the variable and initialize it all in one step:

self.CheckVar = IntVar(value=1)
self.checkbutton = Checkbutton(..., variable = self.CheckVar)

You can also use the select function of the checkbutton:

self.checkbutton.select()

Upvotes: 46

Paul Trovato
Paul Trovato

Reputation: 9

var4 = IntVar(value=1)
Checkbutton(root, text="New", variable=var4, bg="light green").grid(row=12, column=0)

This will check all the check boxs.

Upvotes: -1

DeveloperLV
DeveloperLV

Reputation: 1781

Just adding onto GunnerStone's answer - Because I was looking for something where I can reset my values/checkboxes.

If you'd like to de-select the checkbox value for whatever reason, use deselect():

from Tkinter import *

CheckVar = IntVar()
self.checkbutton = Checkbutton(self.root, text = "Test", variable = CheckVar)
self.checkbutton.deselect()

or use toggle to switch between the two:

self.checkbutton.toggle()

Upvotes: 5

Gunner Stone
Gunner Stone

Reputation: 1005

I think the function you are looking for is .select()

This function selects the checkbutton (as can be assumed from the function name)

Try calling this function after your widget is defined:

from Tkinter import *

CheckVar = IntVar()
self.checkbutton = Checkbutton(self.root, text = "Test", variable = CheckVar)
self.checkbutton.select()

By calling the function right after the widget is created, it looks as though it's selected by default.

Upvotes: 19

Related Questions