专栏首页python3tkinter -- RadioButton

tkinter -- RadioButton

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()

效果:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python图形编程探索系列-01-初级

    设计一个主窗口,在其中添加三个标签和三个按钮,当点击按钮时,对标签的内容和色彩进行修改。

    py3study
  • tkinter -- Grid

    实现机制是将 Widget 逻辑上分割成表格,在 指定的位置放置想要的 Widget 就可以了

    py3study
  • Python创建界面程序

    py3study
  • Python图形编程探索系列-01-初级

    设计一个主窗口,在其中添加三个标签和三个按钮,当点击按钮时,对标签的内容和色彩进行修改。

    py3study
  • FastDFS 环境搭建

    FastDFS 是用 C 语言编写的一款开源的分布式文件系统。FastDFS 为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性...

    IT技术小咖
  • Linux系统是否被植入木马的排查流程梳理

    在日常繁琐的运维工作中,对linux服务器进行安全检查是一个非常重要的环节。今天,分享一下如何检查linux系统是否遭受了入侵? 一、是否入侵检查 1)检查系统...

    洗尽了浮华
  • LeetCode 663. 均匀树划分(树形DP)

    给定一棵有 n 个结点的二叉树,你的任务是检查是否可以通过去掉树上的一条边将树分成两棵,且这两棵树结点之和相等。

    Michael阿明
  • linux基础命令介绍九:进程与内存

    计算机存在的目的就是为了运行各种各样的程序,迄今我们介绍的绝大多数命令,都是为了完成某种计算而用编程语言编写的程序,它们以文件的形式保存在操作系统之中(比如/b...

    用户5030870
  • 使用docker搭建一套开发环境全家桶

    DNMP(Docker + Nginx + MySQL + PHP7/5 + Redis)是一款全功能的LNMP一键安装程序。支持的服务丰富、功能强大、使用简单...

    A梦多啦A
  • Linux基础之网络 原

    eth(Ethernet的缩写)新安装的虚拟机为eth0,为什么原来的eth0会变成eth1?

    云飞扬

扫码关注云+社区

领取腾讯云代金券