10 Checkbutton 组件
10 Checkbutton 组件
Tkinter 是 Python 的标准 GUI 库,它提供了一系列的控件来创建图形用户界面。Checkbutton 是其中的一个组件,用于创建可以被选中或取消选中的按钮,通常用于实现布尔值的开关功能。
创建 Checkbutton
创建一个基本的 Checkbutton 很简单,你需要提供一个父容器(如 Frame 或 Toplevel),以及一些文本标签。
import tkinter as tkroot = tk.Tk()
check_var = tk.BooleanVar()checkbutton = tk.Checkbutton(root, text="Check me!", variable=check_var)
checkbutton.pack()root.mainloop()
在上面的代码中,BooleanVar 是一个特殊的变量类型,用于存储 Checkbutton 的状态(选中或未选中)。
获取 Checkbutton 状态
你可以通过 BooleanVar 对象来获取 Checkbutton 的状态:
if check_var.get():print("Checkbutton is selected")
else:print("Checkbutton is not selected")
使用命令回调
你可以为 Checkbutton 设置一个命令回调函数,当按钮状态改变时,这个函数会被调用。
def on_checkbutton_change():print("Checkbutton state changed to", check_var.get())checkbutton = tk.Checkbutton(root, text="Check me!", variable=check_var, command=on_checkbutton_change)
多个 Checkbutton
通常,你可能需要创建多个 Checkbutton。为了方便管理,可以将它们的 BooleanVar 存储在一个列表或字典中。
check_vars = []for i in range(3):check_var = tk.BooleanVar()checkbutton = tk.Checkbutton(root, text=f"Option {i+1}", variable=check_var)checkbutton.pack()check_vars.append(check_var)
配置选项
Checkbutton 提供了多种配置选项,例如:
onvalue和offvalue:设置选中和未选中时变量的值,默认为True和False。activebackground和activeforeground:设置按钮被激活时的背景和前景色。anchor:设置文本相对于按钮的对齐方式。
简单案例
让我们通过几个具体的案例来展示如何使用Tkinter的Checkbutton组件。
案例 1: 简单的布尔选项开关
在这个案例中,我们将创建一个简单的界面,其中包含一个Checkbutton,用于切换一个布尔选项。

import tkinter as tk # 导入tkinter模块,并给它一个别名tkdef toggle_option(): # 定义一个函数,用于处理Checkbutton状态改变时的事件if option_var.get(): # 检查option_var变量的值,判断Checkbutton是否被选中print("选项是开的") # 如果被选中,打印提示信息“选项是开的”else:print("选项是关的") # 如果未被选中,打印提示信息“选项是关的”root = tk.Tk() # 创建Tkinter窗口实例option_var = tk.BooleanVar() # 创建一个BooleanVar变量来存储Checkbutton的状态checkbutton = tk.Checkbutton(root, text="切换选项", variable=option_var, command=toggle_option) # 创建Checkbutton,设置文本为“切换选项”,关联的变量为option_var,并设置当Checkbutton状态改变时调用toggle_option函数
checkbutton.pack() # 将Checkbutton添加到窗口中root.mainloop() # 进入Tkinter的主事件循环,等待用户操作
案例 2: 多个选项选择
这个案例展示了如何创建多个Checkbutton,允许用户选择多个选项。

import tkinter as tkdef show_selection():# 创建一个列表,包含所有被选中的选项的标签selected_options = [label for label, var in options_vars.items() if var.get()]# 打印出被选中的选项print("Selected options:", selected_options)root = tk.Tk() # 创建Tkinter窗口实例options_vars = {} # 创建一个空字典,用于存储各个Checkbutton的变量options = ["Option 1", "Option 2", "Option 3"] # 定义一个包含选项标签的列表
for i, option in enumerate(options): # 遍历选项列表var = tk.BooleanVar() # 为每个Checkbutton创建一个BooleanVar变量,用于存储其状态checkbutton = tk.Checkbutton(root, text=option, variable=var) # 创建Checkbutton,设置文本为选项标签checkbutton.pack() # 将Checkbutton添加到窗口中options_vars[option] = var # 将创建的BooleanVar变量存储到字典中,方便后续访问show_button = tk.Button(root, text="Show Selected", command=show_selection) # 创建一个按钮,用于显示选中的选项
show_button.pack() # 将按钮添加到窗口中root.mainloop() # 进入Tkinter的主事件循环,等待用户操作
案例 3: 使用onvalue和offvalue
在这个案例中,我们将展示如何使用onvalue和offvalue选项来改变Checkbutton的值。

import tkinter as tkdef print_values():# 打印出当前Checkbutton的值print("Checkbutton value:", check_var.get())root = tk.Tk() # 创建Tkinter窗口实例check_var = tk.StringVar() # 创建一个StringVar变量来存储Checkbutton的状态checkbutton = tk.Checkbutton(root, text="Check me!", variable=check_var, onvalue="Yes", offvalue="No")
# 创建Checkbutton,设置文本为"Check me!",关联的变量为check_var,并设置选中时的值为"Yes",未选中时的值为"No"checkbutton.pack() # 将Checkbutton添加到窗口中print_button = tk.Button(root, text="Print Value", command=print_values) # 创建一个按钮,用于打印Checkbutton的值
print_button.pack() # 将按钮添加到窗口中root.mainloop() # 进入Tkinter的主事件循环,等待用户操作
案例 4: 使用anchor选项
这个案例演示了如何使用anchor选项来改变Checkbutton文本的对齐方式。

import tkinter as tkdef toggle_option():# 检查option_var变量的值,判断Checkbutton是否被选中if option_var.get():print("选项是开的") # 如果被选中,打印提示信息“选项是开的”else:print("选项是关的") # 如果未被选中,打印提示信息“选项是关的”root = tk.Tk() # 创建Tkinter窗口实例option_var = tk.BooleanVar() # 创建一个BooleanVar变量来存储Checkbutton的状态# 创建Checkbutton,设置文本为“切换选项”,关联的变量为option_var,并设置当Checkbutton状态改变时调用toggle_option函数
# 使用anchor选项来指定文本在Checkbutton中的对齐方式,这里设置为'w',表示文本左对齐
checkbutton = tk.Checkbutton(root, text="切换选项", variable=option_var, command=toggle_option, anchor='w')
checkbutton.pack() # 将Checkbutton添加到窗口中root.mainloop() # 进入Tkinter的主事件循环,等待用户操作
以上案例展示了Checkbutton组件在不同场景下的应用,包括基本的布尔选项开关、多选项选择、自定义选中值以及文本对齐方式的调整。通过这些示例,你可以根据自己的需求创建更加复杂的用户界面。
相关文章:
10 Checkbutton 组件
10 Checkbutton 组件 Tkinter 是 Python 的标准 GUI 库,它提供了一系列的控件来创建图形用户界面。Checkbutton 是其中的一个组件,用于创建可以被选中或取消选中的按钮,通常用于实现布尔值的开关功能。 创建 Checkbutton 创建一个基本的 C…...
获奖方案|趋动科技:资源池化释放AI算力价值
“据统计,GPU的平均利用率不超过30%,会产生巨大的算力资源浪费。我们用软件定义的方式通常可以把用户GPU的利用率提升3-8倍,甚至可以到10倍。” 这是算力池化软件公司趋动科技援引行业报告数据并结合自身企业最佳实践经验给出的最新数据。通…...
Gin框架接入pyroscope完美替代pprof实现检测内存泄露
传统检测内存泄露可以看一下我这篇文章Gin框架接入Prometheus,grafana辅助pprof检测内存泄露-CSDN博客 pyroscope被Grafana收购,GPT来总结一下pyroscope的强大之处🐶 pyroscope github地址 pyroscope与grafana的安装 docker compose安装,这里我们其实…...
记录一个lombok和mybatisplus的问题,@Data注解失效
刚开始我这里一直爆红,Article实体类也加了Data注解 依赖也导入了lombok,后来觉得是版本的问题,换了几个版本也是不行 后来最后还是在各种资料下,找到了原因 首先使用lombok不是只要导入依赖就行的,还要有插件&#…...
React学习-初始化react项目
目标: reactv18:->1.核心的22中api2路由3.数据状态管理:redux项目: 1.b端业务闭环:登录方案、权限设计、用户管理方案、业务功能、系统架构设计、路由设计流程闭环:开发环境、生产环境、测试环境、代码规范、分支管理规范、项…...
ubuntu查看CPU、内存、硬盘
1、查看CPU cat /proc/cpuinfo 我这台机器CPU是2核,所以这里是2核 或者使用如下命令也可以查看 lscpu 查看CPU使用率 top 2、查看内存 查看内存信息: free -h 查看内存使用情况: vmstat 3、硬盘 查看硬盘使用情况: df -…...
第5章 使用Intent和IntentFilter通信
第5章 使用Intent和IntentFilter通信 本章要点 理解Intent对于Android应用的作用使用Intent启动系统组件Intent的Component属性的作用Intent的Action属性的作用Intent的Category属性的作用为指定Action、Category的Intent配置对应的intent-filterIntent的Data属性Intent的Typ…...
AI产品经理需要了解的算法知识
这篇文章给大家系统总结一下AI产品经理需要了解的算法知识。 1、自然语言生成(NLG) 自然语言生成(Natural Language Generation,简称NLG)是一种人工智能技术,它的目标是将计算机的数据、逻辑或算法产生的…...
OD C卷 - 结对编程
结对编程(200) 某部门计划通过结队编程来进行项目开发,部门有N名员工,每个员工有唯一的职级,三个员工为一组,结队分组规则如下:选出序号为i,j,k的员工,职级分别为level[i], level[j…...
AcWing 723. PUM
输入两个整数 NN 和 MM,构造一个 NN 行 MM 列的数字矩阵,矩阵中的数字从第一行到最后一行,按从左到右的顺序依次为 1,2,3,…,NM1,2,3,…,NM。 矩阵构造完成后,将每行的最后一个数字变为 PUM。 输出最终矩阵。 输入格式 共一行…...
编译安装php7.4.33正确开启opcache,不只是去掉opcache.enable=1前面的分号
编译安装php7.4.33正确开启opcache,不只是去掉opcache.enable1前面的分号 要成功开启 必须增加zend_extensionopcache.so 请看下面的样例: [opcache] zend_extensionopcache.so; Determines if Zend OPCache is enabled opcache.enable1; Determines …...
ComfyUI - 在服务器中部署 AIGC 绘画的 ComfyUI 工具 教程
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/141140498 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 ComfyU…...
MySQL中的distinct和group by哪个效率更高?
前言 大家好,我是月夜枫~~ 一、distinct和group by的区别 1.1.作用方式和应用场景 group by和distinct的主要区别在于它们的作用方式和应用场景。 group by用于对数据进行分组和聚合操作,通常与聚合函数(如COUNT、SUM、AVG等…...
STM32F103C8T6单片机原理图设计(PCB板)
先了解了以下stm32f103c8t6的引脚使用: 对比过一些原理图,我发现除了特定协议的引脚功能,只要功能正确,可以自己选择连接对应的引脚。可以根据使用的LED/BEEP/DHT11/BH1750/ESP8266等模块的功能对应相应的引脚: WIFI(…...
Qt自定义控件:关于大佬“飞扬青云“的自定义UI控件的使用教程(MinGw,MSVC)
前言 最近在搞自定义控件,无意间发现大佬飞扬青云的开源项目,Qt/C编写超精美自定义控件 这里先贴出大佬项目地址和博客 码云:wwlzq5/qucsdk (gitee.com)(旧版下载地址Qt4.7到Qt5.14) github:https://git…...
关于RCE
什么是RCE? RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。也就是远程命令执行。命令执行是在目标服务器上任意执行系统命令。它属于高危漏洞之一,也属于代码执行的范畴。命令执行漏洞与…...
深入理解npm:从入门到精通
1. npm 简介 npm(Node Package Manager)是 Node.js 生态系统中的核心组件,它不仅是一个包管理器,还是一个强大的开发工具和庞大的开源社区。自2010年首次发布以来,npm 已经成为世界上最大的软件注册表,拥有…...
Docker入门教程:10分钟掌握基础
Docker入门教程:10分钟掌握基础 1. Docker是什么? Docker是一种容器化技术,它允许开发者打包他们的应用以及应用的依赖环境到一个可移植的容器中,这个容器可以在任何支持Docker的操作系统上运行。 2. Docker的基本组成 镜像&a…...
NLP实验-基于预训练模型的文本分类
使用BERT及其变体实现AclImdb情感分类 前言数据集介绍【Hugging Face】使用方法和如何挑选一个自己需要的模型 基于BERT预训练模型的本文分类数据预处理载入文本标记器将数据转化为模型可以接受的格式训练模型加载模型 基于RoBerta预训练模型的文本分类基于DeBerta预训练模型的…...
Table API SQL的概念和通用API
目录 表API和SQL程序的结构 创建表环境(Create a TableEnvironment) 在目录中创建表(Create Tables in the Catalog) 临时表与永久表(Temporary vs Permanent tables) 遮蔽(Shadowing) 创建表(Create a Table) 连接器表(Connector Tables) 虚拟表(Virtual…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
