当前位置: 首页 > 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;以及开发过程中常用的插件推…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 题目描述解题思路Java代码 题目描述 题目链接&#xff1a;LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...