单选框(Radiobutton)表示该组元素仅可以选中其中一个元素。
创建单选框时,多个同组的元素的 variable 属性要相同,这样才表示它们是属于一个组的。另外,同一个组内的元素 value 属性应该不同,这样当某个元素被选中时,variable 指定的值就等于该元素对应的 value 属性的值。
- import sys # 引入sys模块
- if sys.version_info.major == 3: # 如果是Python 3
- import tkinter as tk
- elif sys.version_info.major == 2: # 如果是Python 2
- import Tkinter as tk
- import random
- class DemoApplication(tk.Frame):
- def on_radiobox_changed(self):
- if self.check_box_var1.get()==1:
- main_win.title(u"C被选中了")
- elif self.check_box_var1.get()==2:
- main_win.title(u"Python被选中了")
- elif self.check_box_var1.get()==3:
- main_win.title(u"Java被选中了")
- else:
- main_win.title(u"单选框演示")
- def createWidgets(self):
- self.check_box_var1 = tk.IntVar()
- # 创建单选框1
- self.check_box1 = tk.Radiobutton(main_win,
- text=u'C',
- variable = self.check_box_var1,
- value = 1,
- command=self.on_radiobox_changed)
- self.check_box1.pack()
- # 创建单选框2
- self.check_box2 = tk.Radiobutton(main_win,
- text=u'Python',
- variable = self.check_box_var1,
- value = 2,
- command=self.on_radiobox_changed)
- self.check_box2.pack()
- # 创建一个单选框
- self.check_box3 = tk.Radiobutton(main_win,
- text=u'Java',
- variable = self.check_box_var1,
- value = 3,
- command=self.on_radiobox_changed)
- self.check_box3.pack()
- def __init__(self, master=None):
- tk.Frame.__init__(self, master)
- self.createWidgets()
- main_win = tk.Tk() # 创建主窗口
- main_win.title(u"单选框演示") # 设置主窗口的标题
- main_win.geometry("300x100") # 设置主窗口的大小
- app = DemoApplication(master=main_win)
- app.mainloop() # 启动消息循环
运行该程序,可以看到如图 1 所示的窗口。
不同单选框被选中后的状态如图 2 所示。