在tkinter的控件中,Radiobutton表示单选按键,即只能在多个选项中选择一个。
1 Radiobutton的创建
通过tkinter库中的Radiobutton类创建单选按键,代码如图1所示。
图1 Radiobutton的创建
其中,第3-8行代码创建了三个单选按键,这三个按键的标题分别是“足球”、“篮球”和“排球”。通过单选按键的实例调用的pack()方法指定了单选按键的位置,参数anchor的值“e”是“east”的缩写,表示单选按键位于win窗口的东面,也就是右侧;“w”是“west”的缩写,表示单选按键位于win窗口的西面,也就是坐侧;“center”表示单选按键位于窗口的中间位置。
相关链接1 anchor的取值为“e”、“w”、“n”、“s”、“se”、“sw”、“ne”、“nw”和“center”,分别表示“东”、“西”、“北”、“南”、“东南”、“西南”、“东北”、“西北”和“中间”位置。
以上代码创建的界面如图2所示。
图2 界面1
从图2中可以看出,每个“足球”按键位于窗口的右侧,“篮球”按键位于窗口的左侧,“排球”按键位于窗口的中间,但是此时三个按键都处于被选中状态。
2 设置按键的选中状态
在前面提到,单选按键的特性是只能选中其中一个。因此,在创建按键时,需要设置哪个按键被选中,哪些按键不被选中,代码如图3所示。
图3 设置按键的选中状态
从图3的第3行可以看出,var是tkinter中的IntVar()类的实例,该实例可以用来存储和管理整数类型的数据;第4行通过set()方法设置var的值是1;第5、7和9行在创建Radiobutton时,添加了variable参数和value参数,variable=var表示当选中该按键时,将指定的值赋值给var,value=0表示当选中该按键时,将var设置为0、1或者2。因为在第4行中将var的值设置为1,因此,当程序运行时,value值为1的单选按键,即“篮球”按键将会被选中,其它两个按键不会被选中,如图4所示。
相关链接2 IntVar()类用于存储整数值,通常用于创建单选按键、复选框等控件的状态变量。
图4 界面2
3 设置单选按键的点击响应
当选中某个单选按键时,实现不同的响应,代码如图5所示。
图5 添加点击响应
其中,第5-12行自定义了一个名为click的函数,在该函数中,首先通过get()获取var的值,因为点击了不同的单选按键,var的值不同,因此之后通过if...elif...else语句对var的不同取值进行不同处理。第13行中,在创建Radionbutton时,通过command参数指定其点击响应,也就是说当鼠标点击了该单选按键时,程序就会调用click()函数。程序运行的效果如图6所示。