Tkinter教程之Checkbutton篇

本文详细介绍了Tkinter中的Checkbutton组件,从基础用法到高级特性,包括设置回调函数、改变显示文本、获取On/Off状态等。通过示例代码展示了如何创建Checkbutton、绑定事件、设置状态值以及自定义On和Off的对应值。是学习Tkinter GUI编程的重要参考。

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

# Tkinter教程之Checkbutton篇
#
Checkbutton又称为多选按钮,可以表示两种状态:On和Off,可以设置回调函数,每当点击此按钮时回调函数被调用
''' 1.一个简单的Checkbutton例子 '''
# 创建一个Checkbutton,显示文本为"python"
from  Tkinter  import   *
root 
=  Tk()
Checkbutton(root,text 
=   ' python ' ).pack()
root.mainloop()

''' 2.设置Checkbutton的回调函数 '''
from  Tkinter  import   *
def  callCheckbutton():
    
print   ' you check this button '
root 
=  Tk()
Checkbutton(root,text 
=   ' check python ' ,command  =  callCheckbutton).pack()
root.mainloop()
# 不管Checkbutton的状态如何,此回调函数都会被调用

''' 3.通过回调函数改变Checkbutton的显示文本text的值 '''
from  Tkinter  import   *
def  callCheckbutton():
    
# 改变v的值,即改变Checkbutton的显示值
    v.set( ' check Tkinter ' )

root 
=  Tk()
=  StringVar()
v.set(
' check python ' )
# 绑定v到Checkbutton的属性textvariable
Checkbutton(root,text  =   ' check python ' ,textvariable  =  v,command  =  callCheckbutton).pack()

root.mainloop()

''' 4.上述的textvariable使用方法与Button的用法完全相同,使用此例是为了区别Checkbutton的另外的一个属性variable,此属性与textvariable不同,它是与这个控件本身绑定,Checkbutton自己有值:On和Off值,缺省状态On为1,Off为0,如: '''
# 显示Checkbutton的值
from  Tkinter  import   *
root 
=  Tk()
# 将一整数与Checkbutton的值绑定,每次点击Checkbutton,将打印出当前的值
=  IntVar()
def  callCheckbutton():
    
print  v.get()
Checkbutton(root,
            variable 
=  v,
            text 
=   ' checkbutton value ' ,
            command 
=  callCheckbutton).pack()
root.mainloop()

''' 5.Checkbutton的值不仅仅是1或0,可以是其他类型的数值,可以通过onvalue和offvalue属性设置Checkbutton的状态值,如下代码将On设置为'python',Off值设置为'Tkinter',程序的打印值将不再是0或1,而是'Tkinter’或‘python’ '''
from  Tkinter  import   *
root 
=  Tk()
# 将一字符串与Checkbutton的值绑定,每次点击Checkbutton,将打印出当前的值
=  StringVar()
def  callCheckbutton():
    
print  v.get()
Checkbutton(root,
            variable 
=  v,
            text 
=   ' checkbutton value ' ,
            onvalue 
=   ' python ' ,         # 设置On的值
            offvalue  =   ' tkinter ' ,     # 设置Off的值
            command  =  callCheckbutton).pack()
root.mainloop()

#  6.还有其他的属性fg/bg/relief/width/height/justify/state使用方法与Button相同,不再举例。

# author:     jcodeer
#
blog:    jcodeer.cublog.cn
#
email:    jcodeer@126.com
 
Tkinter中,如果你有一个包含了大量`Checkbutton`的窗口并且需要增加垂直滚动条以便查看所有的选项,可以使用`Scrollbar`和`Canvas`结合的方式来实现。以下是步骤: 1. 首先,创建一个`Scrollbar`实例并将其放置在窗口底部: ```python scrollbar = tk.Scrollbar(root, orient="vertical") scrollbar.pack(side=tk.RIGHT, fill=tk.Y) # 将滚动条放在右边 ``` 2. 然后,创建一个`Canvas`作为容器,它会自动包含滚动条,并且内容超出可视范围时就会触发滚动: ```python canvas = tk.Canvas(root, yscrollcommand=scrollbar.set) canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) scrollbar.config(command=canvas.yview) # 连接滚动条和画布的行为 ``` 3. 接下来,在`Canvas`上绘制一个内嵌的`Frame`用于放置`Checkbuttons`,并将`Frame`的`bind()`方法设置为监听`<Configure>`事件以调整滚动区域: ```python frame = tk.Frame(canvas) frame.bind("<Configure>", lambda e: canvas.configure(scrollregion=canvas.bbox("all"))) # 更新滚动区域 canvas.create_window((0, 0), window=frame, anchor=tk.NW) ``` 4. 最后,在`frame`上添加`Checkbuttons`,记住要将它们放在`Frame`里: ```python for i, checkbox in enumerate(checkbuttons): checkbox.grid(row=i, column=0, sticky="nswe") # 注意这里只设置了水平排列 frame.rowconfigure(i, weight=1) # 分配合适的权重以适应滚动 frame.columnconfigure(0, weight=1) ``` 现在,你有了一个带有垂直滚动条的`Checkbutton`集合,可以滚动浏览所有的选项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值