当前位置: 首页 > news >正文

Python GUI 编程:tkinter 初学者入门指南——复选框

在本文中,将介绍 tkinter Checkbox 复选框小部件以及如何有效地使用它。

复选框是一个允许选中和取消选中的小部件。复选框可以保存一个值,通常,当希望让用户在两个值之间进行选择时,可以使用复选框。

要创建复选框,请使用如下构造函数。

checkbox = tk.Checkbutton(master,text='<checkbox label>',command=check_changed,variable=checkbox_var,onvalue='<value_when_checked>',offvalue='<value_when_unchecked>')
  • text 参数:指定复选框的显示标签。

  • command 参数:选中或取消选中复选框时调用的命令。

  • variable 参数:保存复选框当前值的变量。选中复选框,则变量的值为 1。否则为 0。

  • onvalue、offvalue 参数:指定 variable 变量 0 和 1 以外的其他值。

import tkinter as tk
from tkinter.messagebox import showinfo
root = tk.Tk()
root.geometry('600x400+200+200')
root.title('Checkbutton 复选框演示')# 创建变量,保存复选框的值
agr = tk.StringVar()# 定义函数,复选框状态发生变化就调用该函数
def agr_changed():tk.messagebox.showinfo(title='是否同意', message=agr.get())# 创建复选框
checkbox = tk.Checkbutton(root,text='是否同意',command=agr_changed,variable=agr,onvalue='同意',offvalue='不同意')
checkbox.pack()
root.mainloop()

以下示例使用 indicatoron=0 选项取消复选框前面的小方块,取消复选框的 Text 并显示图像。

import tkinter as tk
from tkinter.messagebox import showinfo
root = tk.Tk()
root.geometry('600x400+200+200')
root.title('Checkbutton 复选框演示')
frame = tk.LabelFrame(root, text='请选择', padx=30, pady=10)
frame.pack(padx=100, pady=100)
checked_image = tk.PhotoImage(file="logo.png")
unchecked_image = tk.PhotoImage(file="logo2.png")
checkbutton_1 = tk.Checkbutton(frame, indicatoron=0, overrelief="sunken", image=unchecked_image, selectimage=checked_image)
checkbutton_1.pack(side=tk.LEFT)
checkbutton_2 = tk.Checkbutton(frame, indicatoron=0, overrelief="sunken", image=unchecked_image, selectimage=checked_image)
checkbutton_2.pack(side=tk.LEFT)
checkbutton_3 = tk.Checkbutton(frame, indicatoron=0, overrelief="sunken", image=unchecked_image, selectimage=checked_image)
checkbutton_3.pack(side=tk.LEFT)
checkbutton_4 = tk.Checkbutton(frame, indicatoron=0, overrelief="sunken", image=unchecked_image, selectimage=checked_image)
checkbutton_4.pack(side=tk.LEFT)
root.mainloop()

Checkbox 复选框选项

方法说明
deselect()取消复选框选择。
select()选择复选框。
toggle()选择和取消选择之间切换。

以下示例设置两个按钮,利用 deselect() 和 select() 方法,全选和取消全选所有复选框。

import tkinter as tk
root = tk.Tk()
root.geometry('600x400+200+200')
root.title('Checkbutton 复选框演示')def clear_selection():cb1.deselect()cb2.deselect()cb3.deselect()cb4.deselect()cb5.deselect()cb6.deselect()def selection():cb1.select()cb2.select()cb3.select()cb4.select()cb5.select()cb6.select()var1 = tk.BooleanVar()
var2 = tk.BooleanVar()
var3 = tk.BooleanVar()
var4 = tk.BooleanVar()
var5 = tk.BooleanVar()
var6 = tk.BooleanVar()frame1 = tk.LabelFrame(root, text='Group 1', padx=30, pady=10)
frame1.pack(side=tk.LEFT, padx=50)
frame2 = tk.LabelFrame(root, text='Group 2', padx=30, pady=10)
frame2.pack(side=tk.RIGHT, padx=50)
cb1 = tk.Checkbutton(frame1, text='Number 1', variable=var1)
cb1.pack()
cb2 = tk.Checkbutton(frame1, text='Number 2', variable=var2)
cb2.pack()
cb3 = tk.Checkbutton(frame1, text='Number 3', variable=var3)
cb3.pack()
cb4 = tk.Checkbutton(frame2, text='Number 4', variable=var4)
cb4.pack()
cb5 = tk.Checkbutton(frame2, text='Number 5', variable=var5)
cb5.pack()
cb6 = tk.Checkbutton(frame2, text='Number 6', variable=var6)
cb6.pack()button1 = tk.Button(root, text='Unselect all', command=clear_selection)
button1.pack()
button2 = tk.Button(root, text='Select All', command=selection)
button2.pack()
root.mainloop()

Checkbox 复选框选项

选项说明
master指定复选框的父级窗口或框架。
variable保存复选框当前值的变量,用于存储复选框的选中状态。
onvalue指定当复选框被选中时,variable变量的值。
offvalue指定当复选框未被选中时,variable变量的值。
command指定一个函数,当复选框的状态改变时,该函数将被调用。
text指定复选框旁边显示的文本。
image指定一个图像对象,显示在复选框旁边。
compound指定图像和文本的对齐方式,如TOP, BOTTOM, LEFT, RIGHT。
invcmd指定一个函数,当复选框的状态改变时,如果command指定的函数返回False,则调用此函数。
selectcolor指定复选框被选中时的背景颜色。
height指定复选框的高度(通常用于显示图像)。
width指定复选框的宽度(通常用于显示文本)。
anchor指定文本的对齐方式,如W(西), E(东), N(北), S(南), CENTER。
justify指定文本的对齐方式,如LEFT, RIGHT, CENTER。
padx指定复选框与其文本之间的水平填充。
pady指定复选框与其文本之间的垂直填充。
indicatoron是否绘制前边作为选择的小方块,设置为0,可以将整个小部件变成复选框。

相关文章:

Python GUI 编程:tkinter 初学者入门指南——复选框

在本文中&#xff0c;将介绍 tkinter Checkbox 复选框小部件以及如何有效地使用它。 复选框是一个允许选中和取消选中的小部件。复选框可以保存一个值&#xff0c;通常&#xff0c;当希望让用户在两个值之间进行选择时&#xff0c;可以使用复选框。 要创建复选框&#xff0c;…...

使用vscode导入库失败解决方法

导入库失败原因 在使用vscode写python代码时&#xff0c;有时会遇见导入库失败的情况&#xff0c;如下图&#xff1a;无法解析导入“xxxxx” 或者 运行时报错&#xff1a;ModuleNotFoundError: No module named xxxxx。 原因可能有&#xff1a; 根本没有下载库&#xff1b…...

无线网卡知识的学习-- mac80211主要代码流程

一 简介概要: mac80211驱动程序作为Linux内核中管理和控制无线网络接口的核心模块,其主要流程涵盖了从数据帧接收到发送的完整过程。 主要覆盖了7个方面: 1. 数据帧接收流程,2. 数据帧发送流程 3. 频道管理和切换 4. 接口管理 5. 安全和认证 6. 管理和调试 7. 注册和初…...

关于k8s集群高可用性的探究

1. k8s的高可用的核心是什么&#xff1f; 说到核心、本质 意味着要从物理层来考虑技术 k8s是一个容器编排管理工具&#xff0c;k8s受欢迎的时机 是docker容器受欢迎时&#xff0c;因为太多的docker容器&#xff0c;管理起来是一个大工程 那么刚好k8s是google自己用了十来年…...

保姆级Pinpoint(APM)实战教程

什么是Pinpoint Pinpoint是由韩国NAVER公司开发并开源的一款应用程序管理工具&#xff0c;主要针对大规模分布式系统进行性能监控和故障诊断。通过跟踪分布式应用程序之间的事务&#xff0c;帮助分析系统的整体结构以及其中的组件是如何相互连接的。 与其对标的还有Twitter的Zi…...

使用SpringBoot自定义注解+AOP+redisson锁来实现防接口幂等性重复提交

1 前提&#xff0c;整合好springboot和redis,redisson的环境 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency> 2 编写自定义注解&#xff0c;注解的作用是标记…...

k8s和ipvs、lvs、ipvsadm,iptables,底层梳理,具体是如何实现的

计算节点的功能&#xff1a; 提供容器运行的环境 kube-proxy的主要功能&#xff1a; 术业有专攻&#xff0c; kube-proxy的主要功能可以概括为4个字 网络规则 那么kube-proxy自己其实是个daemonset控制器跑的 每个节点上都有个的pod 它负责网络规则 其实呢 它还是个小…...

三、归一化与标准化

归一化与标准化 前言一、最小最大值归一化1.1 原理&#xff08;公式&#xff09;1.2 API 介绍1.2.1 参数介绍1.2.2 属性介绍1.2.3 注意事项1.2.4 代码演示 1.3 举例说明 二、标准化2.1 原理&#xff08;公式&#xff09;2.2 API 介绍2.2.1 参数介绍2.2.2 属性介绍2.2.3 注意事项…...

B2105 矩阵乘法

B2105 矩阵乘法 #include <iostream> using namespace std; int main(){int n,m,k;cin>>n>>m>>k;int arr1[n][m];int arr2[m][k];for(auto & line:arr1){for(auto & x: line){cin>>x;}}for(auto & line:arr2){for(auto & x: lin…...

centos之下的mysql8的安装

文章目录 1.mysql.com进入(网址栏)2.xshell操作2.1拖拽上传2.2安装发布包2.3检查情况2.4安装mysql2.5手动启动2.6查看状态2.7查看随机密码2.8登录2.9重置密码 1.mysql.com进入(网址栏) 找下面的这个download按钮&#xff1a; 一直往下面划&#xff1a;找到下面的这个 下面的这个…...

计算机导论

概述 计算机简史 1935年代&#xff0c;英国数学家图灵(Alan Turing)提出“图灵机”&#xff0c;奠定了计算机的理论基础。 1952年&#xff0c;冯诺依曼确定了计算机由运算器、控制器、存储器、输入、输出等5部分组成&#xff08;Von Neumann 体系结构&#xff09;。 60年代…...

力扣209-长度最小的子数组-滑动窗口思想

题目 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回 0 。 示例 1&#xff1a; 输入&am…...

Xilinx 7系列FPGA PCI Express IP核简介

前言&#xff1a;Xilinx7系列FPGA集成了新一代PCI Express集成块&#xff0c;支持8.0Gb/s数据速率的PCI Express 3.0。本文介绍了7系列FPGA PCIe Gen3的应用接口及一些特性。 1. PCI Express规范演进 PCIe是一种高速串行计算机扩展总线标准&#xff0c;旨在替代传统的PCI和AG…...

红包雨html

1、分享一个红包雨html代码。 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>红包雨小游戏</ti…...

js 基础补充3

1. 闭包 在函数内部定义的函数&#xff0c;可以访问改函数的属性和方法 私有属性 延长变量的生命周期&#xff0c;更好的避免命名冲突 缺点&#xff1a;内存消耗比较大&#xff0c;不建议频繁使用 2. js 原型 原型链 访问对像的属性方法&#xff0c;不光会在对象上查找还会在…...

Invalid bean definition with name ‘employeeMapper‘ defined in file

参考以下博客&#xff1a; <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>3.5.7</version> </dependency> 总结&#xff1a; 1. 拉取老项目的时候要特…...

悦享驾驶,乐在旅途,首选江铃集团新能源易至EV3青春版

金秋时节&#xff0c;天高气爽&#xff0c;正是出游的好时节。不论是家庭自驾游&#xff0c;还是朋友结伴出游&#xff0c;一款好看又好开的车绝对是提升旅行品质的重要因素。江铃集团新能源易至汽车EV3青春版&#xff0c;凭借其超高安全性、便捷操作性、卓越性能&#xff0c;成…...

测试WIFI和以太网的TCP带宽、UDP带宽和丢包率、延时

一、测试TCP、UDP的带宽 作为服务器&#xff1a;iperf3 -s -i 1 &#xff08;或者用CloudCampus软件&#xff0c;或者iperf magic&#xff09; Wi-Fi 发送、接收吞吐率的测试_magic iperf-CSDN博客 车机作为iperf3服务器&#xff0c;电脑作为iperf3得客户端&#xff0c;分别…...

redis 第155节答疑 源码分析Hash类型ziplist结构和zlentry实体解析

155属性 zlbytes zltail zllen entryX zlend 类型 uint32 t uint32 t uint16 t 列表节点 uint8 t 长度 4字节 4字节 2字节 不定 1字节 用途 记录整个压缩列表占用的内存字节数:在对压缩列表进行内存重分配&#xff0c;或者计算 zlend 的位置时使用 记录压缩列表表尾节点距离压缩…...

IDE使用技巧与插件推荐

集成开发环境&#xff08;IDE&#xff09;是开发者日常工作中的重要工具&#xff0c;合理使用IDE和合适的插件&#xff0c;能大大提高开发效率。本文将分享常见IDE&#xff08;如VS Code、IntelliJ IDEA等&#xff09;的一些高效使用技巧&#xff0c;以及开发过程中常用的插件推…...

4象限解析OpenRocket:开源火箭仿真工具的技术突破与实践指南

4象限解析OpenRocket&#xff1a;开源火箭仿真工具的技术突破与实践指南 【免费下载链接】openrocket Model-rocketry aerodynamics and trajectory simulation software 项目地址: https://gitcode.com/GitHub_Trending/op/openrocket 在模型火箭设计领域&#xff0c;物…...

Qwen3-VL-8B系统资源管理:监控与清理GPU显存和C盘空间

Qwen3-VL-8B系统资源管理&#xff1a;监控与清理GPU显存和C盘空间 长期运行像Qwen3-VL-8B这样的大模型服务&#xff0c;就像养了一头“数字大象”——它能力强大&#xff0c;但胃口也不小&#xff0c;尤其能吃GPU显存和硬盘空间。很多朋友刚开始部署时一切顺利&#xff0c;但跑…...

海康MVS软件从下载到实时预览:MV-CA013-21UC工业相机5分钟极速上手教程

海康MVS软件从下载到实时预览&#xff1a;MV-CA013-21UC工业相机5分钟极速上手教程 工业视觉系统正成为智能制造的核心组件&#xff0c;而海康威视MV-CA013-21UC工业相机凭借其高帧率、低噪声和稳定性能&#xff0c;在自动化检测、机器人引导等领域广受欢迎。本文将带您从零开…...

微信小程序物流信息对接实战:发货接口的完整实现指南

1. 微信小程序物流对接的核心价值 对于电商类小程序来说&#xff0c;物流信息同步是用户体验的关键环节。当用户下单后&#xff0c;最关心的就是"我的包裹到哪了"。传统做法需要用户手动复制单号到第三方平台查询&#xff0c;而通过微信官方物流接口&#xff0c;可以…...

手把手教你用DuckDB 1.3.0的DuckLake功能搭建数据湖(PostgreSQL+MinIO实战)

实战指南&#xff1a;基于DuckDB 1.3.0与MinIO构建企业级数据湖架构 在数据驱动的时代&#xff0c;企业需要更灵活、高效的解决方案来管理海量数据。DuckDB 1.3.0推出的DuckLake功能&#xff0c;结合PostgreSQL的元数据管理能力和MinIO的对象存储优势&#xff0c;为中小型企业…...

别再只加Mask了!手把手教你用FlashAttention实现真正的Sliding Window Attention(附代码)

突破传统误区&#xff1a;用FlashAttention实现高效滑动窗口注意力的实战指南 在Transformer模型优化领域&#xff0c;许多开发者对滑动窗口注意力(Sliding Window Attention, SWA)存在一个普遍误解——认为只需在注意力矩阵上添加滑动窗口掩码就能实现线性复杂度。这种错误认…...

对比学习演进笔记:从Memory Bank到MoCo的负样本队列设计

1. 对比学习的核心思想与演进背景 对比学习&#xff08;Contrastive Learning&#xff09;作为自监督学习的重要分支&#xff0c;其核心思想可以用一句话概括&#xff1a;让相似样本的特征表示尽可能接近&#xff0c;不相似样本的特征表示尽可能远离。这种思想最早可以追溯到20…...

Phi-3-mini-4k-instruct-gguf开发者案例:为微信小程序后端提供的轻量API服务

Phi-3-mini-4k-instruct-gguf开发者案例&#xff1a;为微信小程序后端提供的轻量API服务 1. 项目背景与需求 在开发微信小程序时&#xff0c;我们经常需要为前端提供智能文本处理能力&#xff0c;比如自动生成商品描述、智能客服回复、内容摘要等。传统方案要么需要调用第三方…...

MyBatis批量更新避坑指南:从`<foreach>`拼接SQL到`allowMultiQueries`配置的完整流程

MyBatis批量更新实战&#xff1a;从基础实现到性能调优全解析 批量更新操作是后端开发中绕不开的高频需求&#xff0c;但很多开发者在初次接触MyBatis批量更新时&#xff0c;往往会陷入各种"坑"中。本文将带你系统掌握两种主流实现方案&#xff0c;从基础用法到性能优…...

从Dify到Coze再回来:一个后端开发用Gin+Swagger构建AI工作流的踩坑实录

从Dify到Coze再回来&#xff1a;一个后端开发用GinSwagger构建AI工作流的踩坑实录 作为一名长期使用Gin框架的后端开发者&#xff0c;当我第一次尝试将现有服务接入Dify平台构建AI工作流时&#xff0c;本以为会是一次顺畅的旅程。毕竟&#xff0c;我们的API已经通过Swagger 2.0…...