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…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
