tkinter -- RadioButton
短信预约 -IT技能 免费直播动态提醒
Radiobutton 为单选按钮,即在同一组内只能有一个按钮被选中,每当选中组内的一个按钮时,其它的按钮自动改为非选中态,与其他控件不同的是:它有组的概念
不指定绑定变量,每个Radiobutton自成一组
创建一个简单的Radiobutton
示例:
import tkinter as tk
root = tk.Tk()
tk.Radiobutton(root, text='python').pack()
tk.Radiobutton(root, text='tkinter').pack()
tk.Radiobutton(root, text='py3study').pack()
root.mainloop()
效果:
创建一个 Radiobutton 组,使用绑定变量来设置选中的按钮
示例:
import tkinter as tk
root = tk.Tk()
v = tk.IntVar()
# 选中value=1的按钮
v.set(1)
for i in range(3):
tk.Radiobutton(root, variable=v, text='py3study', value=i).pack()
root.mainloop()
效果:
创建两个不同的组
代码:
import tkinter as tk
root = tk.Tk()
v1 = tk.IntVar()
v2 = tk.IntVar()
v1.set(1)
v2.set(2)
# 创建两个组
for v in [v1, v2]: # v1,v2为实例化IntVar的对象
# 每个组含有3个按钮
for i in range(3):
tk.Radiobutton(root, variable=v, text='py3study'+str(i), value=i).pack()
root.mainloop()
效果:
不同的组,各个按钮互相不影响
如果同一个组中的按钮使用相同的 alue,则这两个按钮的工作方式完全相同
代码:
import tkinter as tk
root = tk.Tk()
v = tk.IntVar()
v.set(1)
# 每个组含有3个按钮
# 设置value = 1
for i in range(3):
tk.Radiobutton(root, variable=v, text='py3study'+str(i), value=1).pack()
for i in range(3):
tk.Radiobutton(root, variable=v, text='py3study'+str(2+i), value=i).pack()
root.mainloop()
效果:
上述的例子中共有4个 alue 为1的值,当选中其中的一个时,其他三个也会被选中;选中除了这四个只外的按钮时,四个按钮全部取消
与 Checkbutton 类似,每个 Radiobutton 可以有自己的处理函数,每当点击按钮时,系统会调用相应的处理函数
代码:
import tkinter as tk
root = tk.Tk()
v = tk.IntVar()
v.set(0)
def r1():
print('call r1')
def r2():
print('call r2')
def r3():
print('call r3')
def r4():
print('call r4')
i = 0
for r in [r1, r2, r3, r4]:
tk.Radiobutton(root, variable=v, text='py3study button', value=i, command=r).pack()
tk.Radiobutton(root, variable=v, text='py3study button', value=i, command=r).pack()
i += 1
root.mainloop()
效果:
注意虽然同时可以选中两个按钮,但每次点击按钮,执行的代码只有一次
Radiobutton 另一个比较实用的属性是 indicatoron,缺省情况下为1,如果将这个属性改为0,则其外观是 Sunken
代码:
import tkinter as tk
root = tk.Tk()
v = tk.IntVar()
v.set(1)
for i in range(3):
tk.Radiobutton(root, variable=v, indicatoron=0, text='py3study & tkinter', value=i).pack()
root.mainloop()
效果:
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341