Python_tkinter_单选框(Radiobutton)与复选框(Checkbutton)

本文详细介绍了Tkinter中的单选框(Radiobutton)与复选框(Checkbutton)的使用方法,包括属性设置、事件处理及示例代码,帮助读者深入理解并掌握这两种常用控件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单选框(Radiobutton)与复选框(Checkbutton

thinter.Radiobutton(用于存放的父组件,属性参数...)

thinter.Checkbutton(用于存放的父组件,属性参数...)

具有以下属性

 

anchor          设置组件中文字的对其方式
background(bg)  指定组件的背景色。
borderwidth(bd) 指定组件边框的宽度。
bitmap          指定组件中的位图。
font            指定组件中文本的字体。
foreground(fg)  指定组件的前
height          指定组件的高度。
image           指定组件中的图片。
justify         指定组件中多行文本的对齐方式。
text            指定组件中的文本,可以使用“\n”表示换行。
value           指定组件被选中后(单选框)
onvalue         组件勾选状态值(复选框)
offvalue        组件取消勾选状态的值(复选框)
variable        指定组件所关联的变量。需要使用tkinter.IntVar()或者tkinter.StringVar()创建的值
width           指定组件的宽度。
command         设置复选框操作的触发命令(复选框)
indicatoron     缺省情况下为1,如果将这个属性改为0,则其外观是Sunken,表示按钮的弹起或按下两种状态
textvariable通过回调函数修改按钮的值(复选框)

EG1:简单的单选框

# 创建单选框,单选框的内容是text,内容对应的值是value,g根据value选择
from tkinter import *
root = Tk()
radio1 = Radiobutton(root,text="选择1",value=True)
radio1.grid()
radio2 = Radiobutton(root,text="选择2",value=False)
radio2.grid()
radio3 = Radiobutton(root,text="选择3",value=False)
radio3.grid()
root.mainloop()

实行结果:

EG2:

# EG3:(Radiobutton)
from tkinter import *

root = Tk()
v = IntVar()
v.set(3)  # 在下面的variable,和radiobutton进行绑定,set的值和radiobutton组件中value设置的值比较,相同的那组是默认值(那个黑点的位置),set的范围从0开始,如果set的值超出了下面for循环的范围,没有默认值
for i in range(4):
    Radiobutton(root, variable=v, text="Radiobutton-{}".format(i), value=i).grid()

root.mainloop()

实行结果:

EG3:

# 补充,回调函数,重新设置数值
from tkinter import *
def callRadiobutton():
    # 设置数值
    v.set(1)
root = Tk()
v = IntVar()
# set函数是设置单选框中的初始值,set的参数和Radiobutton组件中的value比较,如果存在相同的情况,则为初始值
v.set(2)
# 三个单选框中都有相同的回调函数callRadiobutton,点击单选框后调用callRadiobutton,重新设置三个单选框的数值
Radiobutton(root, variable=v, text="Radiobutton-{}".format(1), value=1,command=callRadiobutton).grid()
Radiobutton(root, variable=v, text="Radiobutton-{}".format(1), value=2,command=callRadiobutton).grid()
Radiobutton(root, variable=v, text="Radiobutton-{}".format(1), value=3,command=callRadiobutton).grid()

root.mainloop()

实行结果:

EG4:

# 创建两个不同的组
from tkinter import *

root = Tk()
vlang = IntVar()
vos = IntVar()
vlang.set(1)  # 第一个组初始值为1
vos.set(2)  # 第一个组初始值为2
# 创建两个组,不同的组,各个按钮互不影响。
for i in [vlang, vos]:
    for j in range(3):
        Radiobutton(root, variable=i, text="Radiobutton_{}".format(j), value=j).grid()

root.mainloop()

实行结果:

EG6:

# EG6:如果同一个组中的按钮使用相同的value,则这两个按钮的工作方式完全相同
from tkinter import *

root = Tk()
v = IntVar()
v.set(1)
#例子中共有4个alue为1的值,当选中其中的一个时,其他三个也会被选中;选中除了这四个只外的按钮时,四个按钮全部取消
for i in range(3):
    Radiobutton(root, variable=v, text="Radiobutton_{}".format(i), value=1).grid()
for i in range(3):
    Radiobutton(root, variable=v, text="Radiobutton_{}".format(i), value=i).grid()

root.mainloop()

实行结果:

EG7:

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

root = Tk()
v = IntVar()
v.set(3)
def r1():
    print('call r1')
def r2():
    print('call r2')
def r3():
    print('call r3')
def r4():
    print('call r4')
j = 2
# 将四个函数的引用作为一个临时的列表,直接传给单选框组件中的command
# 注意虽然同时可以选中两个按钮,但每次点击按钮,执行的代码只有一次
for i in [r1, r2, r3, r4]:
    Radiobutton(root, variable=v, text="Radiobutton", value=j, command=i).grid()
    Radiobutton(root, variable=v, text="Radiobutton", value=j, command=i).grid()
    j += 1

root.mainloop()

实行结果:

EG8:

# 8.Radiobutton另一个比较实用的属性是indicatoron,缺省情况下为1,如果将这个属性改为0,则其外观是Sunken
# Radiobutton表示按钮的弹起或按下两种状态
from tkinter import *

root = Tk()
v = IntVar()
v.set(1)
for i in range(3):
    Radiobutton(root, variable=v, text="Radiobutton", value=i, indicatoron=0).grid()

root.mainloop()

实行结果:

 Checkbutton

EG1:

# Checkbutton又称为多选按钮,可以表示两种状态:On和Off,可以设置回调函数,每当点击此按钮时回调函数被调用
# 1.一个简单的Checkbutton例子
from tkinter import *

root = Tk()
Checkbutton(root, text="Checkbutton_1").grid()
Checkbutton(root, text="Checkbutton_2").grid()
Checkbutton(root, text="Checkbutton_3").grid()

root.mainloop()

实行结果:

EG2:

# 2.设置Checkbutton的回调函数
from tkinter import *
def call_Checkbutton_1():
    print("call_Checkbutton_1")
def call_Checkbutton_2():
    print("call_Checkbutton_2")
root = Tk()
# 只要是单击,都会触发调用对应的函数(不管Checkbutton的状态如何,此回调函数都会被调用)
Checkbutton(root, text="Checkbutton_1", command=call_Checkbutton_1).grid()
Checkbutton(root, text="Checkbutton_2", command=call_Checkbutton_2).grid()

root.mainloop()

实行结果:

EG3:

# 3.通过回调函数改变Checkbutton的显示文本text的值
from tkinter import *
def callCheckbutton():
    v.set("hello Checkbutton")
root = Tk()
v = StringVar()
v.set("Checkbutton")
# 绑定v到Checkbutton的属性textvariable
Checkbutton(root, text="Checkbutton", textvariable=v, command=callCheckbutton).grid()
root.mainloop()

实行结果:

EG4:

# 4.上述的textvariable使用方法与Button的用法完全相同,使用此例是为了区别Checkbutton的另外的一个属性variable,
# 此属性与textvariable不同,它是与这个控件本身绑定,Checkbutton自己有值:On和Off值,缺省状态On为1,Off为0,
# variable选中的时候的数值为1,否则为0(多选择时候,后台可以获得用户信息)
from tkinter import *

root = Tk()
v = IntVar()
a = StringVar
def callCheckbutton():
    print(v.get())
Checkbutton(root, variable=v, text="Checkbutton", command=callCheckbutton).grid()

root.mainloop()

实行结果:

EG5:

# 5.Checkbutton的值不仅仅是1或0,可以是其他类型的数值,可以通过onvalue和offvalue属性设置Checkbutton的状态值,
# 如下代码将On设置为'python',Off值设置为'Tkinter',程序的打印值将不再是0或1,而是'Tkinter’或‘python
from tkinter import *

root = Tk()
root.title("Checkbutton")
v = StringVar()
def callCheckbutton():
    print(v.get())
Checkbutton(root, variable=v, text="text-Checkbutton", onvalue="onvalue", offvalue="offvalue",
            command=callCheckbutton).grid()

root.mainloop()

实行结果:

 

Python中,使用tkinter库进行图形用户界面(GUI)设计时,可以轻松地添加单选按钮(Radio Buttons)和复选框(Check Buttons)。以下是基本的设计方法和步骤: 单选按钮: 1. 首先,需要创建一个Radiobutton控件,它需要一个组内的所有单选按钮共享同一个`variable`参数。这个参数可以是一个StringVar或者IntVar对象,用于保存当前选中的单选按钮的值。 2. 为每个单选按钮设置`value`参数,这个值在组内应该是唯一的,用于区分不同的选项。 3. 设置`command`参数为一个函数,当选中的单选按钮发生变化时,这个函数会被调用。 4. 通常,单选按钮会放在一个ButtonGroup中,虽然Pythontkinter中没有显式的ButtonGroup控件,但可以通过共享同一个`variable`来实现一组单选按钮。 复选框: 1. 创建Checkbutton控件时,同样需要一个变量,通常是StringVar或者IntVar,用来保存复选框的选中状态。 2. 设置`onvalue`和`offvalue`参数,分别表示复选框选中和未选中时的值。 3. `command`参数同样可以设置,用于当复选框状态改变时调用指定的函数。 以下是代码示例: ```python import tkinter as tk def on_radio_select(val): print("选中的单选按钮值为:", val) def on_check_select(val): print("复选框状态为:", val) # 创建主窗口 root = tk.Tk() # 单选按钮示例 radio_var = tk.IntVar() radio1 = tk.Radiobutton(root, text="选项1", variable=radio_var, value=1, command=lambda: on_radio_select(radio_var.get())) radio2 = tk.Radiobutton(root, text="选项2", variable=radio_var, value=2) radio1.pack() radio2.pack() # 复选框示例 check_var = tk.BooleanVar() check1 = tk.Checkbutton(root, text="复选框1", variable=check_var, onvalue=True, offvalue=False, command=lambda: on_check_select(check_var.get())) check1.pack() # 运行主事件循环 root.mainloop() ```
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值