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…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
6.9-QT模拟计算器
源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...
MySQL体系架构解析(三):MySQL目录与启动配置全解析
MySQL中的目录和文件 bin目录 在 MySQL 的安装目录下有一个特别重要的 bin 目录,这个目录下存放着许多可执行文件。与其他系统的可执行文件类似,这些可执行文件都是与服务器和客户端程序相关的。 启动MySQL服务器程序 在 UNIX 系统中,用…...
如何把工业通信协议转换成http websocket
1.现状 工业通信协议多数工作在边缘设备上,比如:PLC、IOT盒子等。上层业务系统需要根据不同的工业协议做对应开发,当设备上用的是modbus从站时,采集设备数据需要开发modbus主站;当设备上用的是西门子PN协议时…...
Linux中INADDR_ANY详解
在Linux网络编程中,INADDR_ANY 是一个特殊的IPv4地址常量(定义在 <netinet/in.h> 头文件中),用于表示绑定到所有可用网络接口的地址。它是服务器程序中的常见用法,允许套接字监听所有本地IP地址上的连接请求。 关…...
