Python GUI Tk : CheckBox
Check Button Demo: disabled
from Tkinter import * class Dummy: pass var = Dummy() root = Tk() root.title('Checkbutton') for castmember, row, col, status in [ ('A', 0,0,NORMAL), ('B', 0,1,NORMAL), ('C', 1,0,DISABLED), ('D', 1,1,NORMAL), ('E',2,0,NORMAL), ('F', 2,1,NORMAL)]: setattr(var, castmember, IntVar()) Checkbutton(root, text=castmember, state=status, anchor=W, variable = getattr(var, castmember)).grid(row=row, column=col, sticky=W) root.mainloop()
Get check box states
from Tkinter import * root = Tk() states = [] for i in range(10): var = IntVar() chk = Checkbutton(root, text=str(i), variable=var) chk.pack(side=LEFT) states.append(var) root.mainloop() print map((lambda var: var.get()), states)
Save check box states
from Tkinter import * states = [] def onPress(i): states[i] = not states[i] root = Tk() for i in range(10): chk = Checkbutton(root, text=str(i), command=(lambda i=i: onPress(i)) ) chk.pack(side=LEFT) states.append(0) root.mainloop() print states
A check box button
from Tkinter import * class AllTkinterWidgets: def __init__(self, master): frame = Frame(master, width=500, height=400, bd=1) frame.pack() iframe1 = Frame(frame, bd=2, relief=SUNKEN) Button(iframe1, text='Button').pack(side=LEFT, padx=5) Checkbutton(iframe1, text='CheckButton').pack(side=LEFT, padx=5) v=IntVar() Radiobutton(iframe1, text='Button', variable=v, value=3).pack(side=RIGHT, anchor=W) Radiobutton(iframe1, text='Dio', variable=v, value=2).pack(side=RIGHT, anchor=W) Radiobutton(iframe1, text='Ra', variable=v, value=1).pack(side=RIGHT, anchor=W) iframe1.pack(expand=1, fill=X, pady=10, padx=5) root = Tk() #root.option_add('*font', ('verdana', 10, 'bold')) all = AllTkinterWidgets(root) root.title('Tkinter Widgets') root.mainloop()
Add a check box to a Dialog
from Tkinter import * import tkSimpleDialog class MyDialog(tkSimpleDialog.Dialog): def body(self, master): Label(master, text="First:").grid(row=0, sticky=W) Label(master, text="Second:").grid(row=1, sticky=W) self.e1 = Entry(master) self.e2 = Entry(master) self.e1.grid(row=0, column=1) self.e2.grid(row=1, column=1) self.cb = Checkbutton(master, text="Hardcopy") self.cb.grid(row=2, columnspan=2, sticky=W) def apply(self): first = self.e1.get() second = self.e2.get() print first, second root = Tk() d = MyDialog(root) print d.result
Check box bar: get selected check box
from Tkinter import * class Checkbar(Frame): def __init__(self, parent=None, picks=[], side=LEFT, anchor=W): Frame.__init__(self, parent) self.vars = [] for pick in picks: var = IntVar() chk = Checkbutton(self, text=pick, variable=var) chk.pack(side=side, anchor=anchor, expand=YES) self.vars.append(var) def state(self): return map((lambda var: var.get()), self.vars) class Quitter(Frame): def __init__(self, parent=None): Frame.__init__(self, parent) self.pack() widget = Button(self, text='Quit', command=self.quit) widget.pack(expand=YES, fill=BOTH, side=LEFT) def quit(self): ans = askokcancel('Verify exit', "Really quit?") if ans: Frame.quit(self) if __name__ == '__main__': root = Tk() lng = Checkbar(root, ['Python', 'C#', 'Java', 'C++']) tgl = Checkbar(root, ['All']) lng.pack(side=TOP, fill=X) tgl.pack(side=LEFT) lng.config(relief=GROOVE, bd=2) def allstates(): print lng.state(), tgl.state() Quitter(root).pack(side=RIGHT) Button(root, text='Peek', command=allstates).pack(side=RIGHT) root.mainloop()
Border for a group of check boxes
from Tkinter import * class Checkbar(Frame): def __init__(self, parent=None, picks=[], side=LEFT, anchor=W): Frame.__init__(self, parent) self.vars = [] for pick in picks: var = IntVar() chk = Checkbutton(self, text=pick, variable=var) chk.pack(side=side, anchor=anchor, expand=YES) self.vars.append(var) def state(self): return map((lambda var: var.get()), self.vars) class Quitter(Frame): def __init__(self, parent=None): Frame.__init__(self, parent) self.pack() widget = Button(self, text='Quit', command=self.quit) widget.pack(expand=YES, fill=BOTH, side=LEFT) def quit(self): ans = askokcancel('Verify exit', "Really quit?") if ans: Frame.quit(self) if __name__ == '__main__': root = Tk() lng = Checkbar(root, ['Python', 'C#', 'Java', 'C++']) tgl = Checkbar(root, ['All']) lng.pack(side=TOP, fill=X) tgl.pack(side=LEFT) lng.config(relief=GROOVE, bd=2) def allstates(): print lng.state(), tgl.state() Quitter(root).pack(side=RIGHT) Button(root, text='Peek', command=allstates).pack(side=RIGHT) root.mainloop()