Python GUI Tk : RadioButton
What happens when some buttons have same value
from Tkinter import * root = Tk() var = StringVar() for i in range(10): rad = Radiobutton(root, text=str(i), variable=var, value=str(i % 3)) rad.pack(side=LEFT) root.mainloop()
Radio Button Demo
from Tkinter import * root = Tk() root.title('Radiobutton') fruit=[('Option 1', 1), ('Option 2', 2), ('Option 3', 3), ('Option 4', 4), ('Option 5', 5), ('Option 6', 6)] var = IntVar() for text, value in fruit: Radiobutton(root, text=text, value=value, variable=var).pack(anchor=W) var.set(3) root.mainloop()
Toogle group Radio Button
from Tkinter import * root = Tk() root.title('Radiobutton') cheese=[('Option 1', 1), ('Option 2', 2), ('Option 3', 3), ('Option 4', 4), ('Option 5', 5), ('Option 6', 6), ('Option 7', 7)] var = IntVar() for text, value in cheese: Radiobutton(root, text=text, value=value, variable=var, indicatoron=0).pack(anchor=W, fill=X, ipadx=18) var.set(3) root.mainloop()
Radio button in a group
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()
Radio Button Menu
from Tkinter import * class TestMenu: def __init__(self, master): self.master = master self.menubar = Menu(self.master) self.radmenu = Menu(self.menubar) self.radmenu.add_radiobutton(label='A') self.radmenu.add_radiobutton(label='B') self.radmenu.add_radiobutton(label='C') self.radmenu.add_radiobutton(label='D') self.radmenu.add_radiobutton(label='E') self.radmenu.add_radiobutton(label='F') self.radmenu.add_radiobutton(label='G') self.radmenu.add_radiobutton(label='H') self.radmenu.add_radiobutton(label='I') self.menubar.add_cascade(label="Radiobutton Menu", menu=self.radmenu) self.top = Toplevel(menu=self.menubar, width=500, relief=RAISED, borderwidth=2) def main(): root = Tk() root.withdraw() app = TestMenu(root) root.mainloop() if __name__ == '__main__': main()
Radio button bar: get selected button for a group radio button
from Tkinter import * class Radiobar(Frame): def __init__(self, parent=None, picks=[], side=LEFT, anchor=W): Frame.__init__(self, parent) self.var = StringVar() for pick in picks: rad = Radiobutton(self, text=pick, value=pick, variable=self.var) rad.pack(side=side, anchor=anchor, expand=YES) def state(self): return self.var.get() 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('Title', "Really quit?") if ans: Frame.quit(self) if __name__ == '__main__': root = Tk() gui = Radiobar(root, ['A', 'B', 'C'], side=TOP, anchor=NW) gui.pack(side=LEFT, fill=Y) gui.config(relief=RIDGE, bd=2) def allstates(): print gui.state() Quitter(root).pack(side=RIGHT) Button(root, text='Peek', command=allstates).pack(side=RIGHT) root.mainloop()
Get Radio button state
from Tkinter import * root = Tk() var = IntVar() for i in range(10): rad = Radiobutton(root, text=str(i), value=i, variable=var) rad.pack(side=LEFT) root.mainloop() print var.get()
Hold on to your radio variables
from Tkinter import * root = Tk() def radio1(): tmp = IntVar() for i in range(10): rad = Radiobutton(root, text=str(i), value=i, variable=tmp) rad.pack(side=LEFT) tmp.set(5) radio1() root.mainloop()
Save Radio button states
from Tkinter import * state = '' buttons = [] def onPress(i): global state state = i for btn in buttons: btn.deselect() buttons[i].select() root = Tk() for i in range(10): rad = Radiobutton(root, text=str(i), value=str(i), command=(lambda i=i: onPress(i)) ) rad.pack(side=LEFT) buttons.append(rad) root.mainloop() print state