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…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...
LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
基于小程序老人监护管理系统源码数据库文档
摘 要 近年来,随着我国人口老龄化问题日益严重,独居和居住养老机构的的老年人数量越来越多。而随着老年人数量的逐步增长,随之而来的是日益突出的老年人问题,尤其是老年人的健康问题,尤其是老年人产生健康问题后&…...
