当前位置: 代码迷 >> 综合 >> tkinter-radiobutton
  详细解决方案

tkinter-radiobutton

热度:80   发布时间:2024-02-01 01:16:13.0

前一篇文章介绍了checkbutton复选框。本文介绍一下radiobutton单选框。

从前文可知,checkbutton可以同时选中多个,但是radiobutton是只能在一组radiobutton中选中一个。那么radiobutton是怎样实现这种差异的呢?

我们知道,checkbutton是否选中状态值分别存储在两个属性onvalueoffvalue中,然后通过variable来获取选中状态值,每个checkbutton的variable是不同的IntVar。而,radiobutton只有value属性(没有onvalueoffvalue),同组radiobutton的value的值必须不同, variable都指向一个关联变量。这就是radiobutton和checkbutton的主要区别。

至于其他属性和方法都大体相同的,都支持显示文字、图片,背景色,前景色,显示样式等。本文就不再赘述。

下面来看一个示例代码

from tkinter import Tk,Radiobutton,IntVar, StringVarmain_win = Tk()
main_win.title('渔道的radiobutton控件')
width = 300 
height = 300 
main_win.geometry(f'{width}x{height}')def select_cb():print(f'selected option is {val.get()}')# print(f'selected option is {str_val.get()}')val = IntVar()
# str_val = StringVar()rdbtn_attributes = [['apple', 'yellow', 'blue', 5, 'raised', 1, val, select_cb],['orange', 'yellow', 'blue', 5, 'raised', 2, val, select_cb],['pear', 'yellow', 'blue', 5, 'raised', 3, val, select_cb],
]# rdbtn_attributes = [
# ['apple', 'yellow', 'blue', 5, 'raised', 'apple', str_val, select_cb],
# ['orange', 'yellow', 'blue', 5, 'raised', 'orange', str_val, select_cb],
# ['pear', 'yellow', 'blue', 5, 'raised', 'pear', str_val, select_cb],
# ]for text, bg, fg, bd, relief, value, variable, command in rdbtn_attributes:Radiobutton(main_win, text=text, bg=bg, fg=fg, borderwidth=bd, relief=relief, value=value, variable=variable, command=command).pack(anchor='w')main_win.mainloop()

在这里插入图片描述

上述代码中被注释的部分,是使用StringVar来记录radiobutton的选中状态值。

  相关解决方案