前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >tkinter -- RadioButton

tkinter -- RadioButton

作者头像
py3study
发布2018-08-02 17:14:34
9740
发布2018-08-02 17:14:34
举报
文章被收录于专栏:python3

Radiobutton 为单选按钮,即在同一组内只能有一个按钮被选中,每当选中组内的一个按钮时,其它的按钮自动改为非选中态,与其他控件不同的是:它有组的概念

不指定绑定变量,每个Radiobutton自成一组

创建一个简单的Radiobutton

示例:

代码语言:javascript
复制
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()

效果:

blob.png
blob.png

创建一个 Radiobutton 组,使用绑定变量来设置选中的按钮

示例:

代码语言:javascript
复制
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()

效果:

blob.png
blob.png

创建两个不同的组

代码:

代码语言:javascript
复制
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()

效果:

blob.png
blob.png

不同的组,各个按钮互相不影响

如果同一个组中的按钮使用相同的 alue,则这两个按钮的工作方式完全相同

代码:

代码语言:javascript
复制
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()

效果:

444.gif
444.gif

上述的例子中共有4个 alue 为1的值,当选中其中的一个时,其他三个也会被选中;选中除了这四个只外的按钮时,四个按钮全部取消

与 Checkbutton 类似,每个 Radiobutton 可以有自己的处理函数,每当点击按钮时,系统会调用相应的处理函数

代码:

代码语言:javascript
复制
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()

效果:

444.gif
444.gif

注意虽然同时可以选中两个按钮,但每次点击按钮,执行的代码只有一次

Radiobutton 另一个比较实用的属性是 indicatoron,缺省情况下为1,如果将这个属性改为0,则其外观是 Sunken

代码:

代码语言:javascript
复制
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()

效果:

blob.png
blob.png
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/06/01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档