tkinter四大按钮:Button,Checkbutton, Radiobutton, Menubutton
文章目录
- 四大按钮
- Button连击
- Menubutton
- Checkbutton
- Radiobutton
tkinter系列:
- GUI初步💎布局💎绑定变量💎绑定事件💎消息框💎文件对话框
- 控件样式
- 扫雷小游戏💎强行表白神器
四大按钮
tkinter中有四个控件被冠以Button之名,分别是:Button, Checkbutton, Radiobutton, Menubutton,但后三种其实说不上是按钮,Checkbutton是单选框;Radiobutton其实更类似于Combobox;Menubutton则是菜单。
这几种按钮虽然功能各异,但都具有下面这些属性,这些属性属于非常通用的属性,并且在控件样式中也以Button为例,展示过了,本文就不再赘述。既然以四大按钮为题,那么就要稍微有点深度,展示一些此前不曾展示过的高级功能。
| 属性 | 说明 |
|---|---|
| background/bg | 背景色 |
| borderwidth/bd | 边框宽度 |
| foreground/fg | 前景色 |
| state | 状态 |
| font | 字体 |
| width, height | 宽度,高度 |
| padx,pady | 水平外间距,垂直外间距 |
| text | 显示文本 |
| justify | 多行文本对齐方式 |
| relief | 边框样式 |
| underline | 下划线 |
| wraplength | 换行宽度 |
Button连击
Button可通过repeatdelay和repeatinterval来控制连击操作。
正常情况下,只有按下鼠标然后再抬起,才算是一次点击事件。而tkinter中点击的逻辑则是,如果按下按钮不松手,那么等待repeatdelay时间后,每隔repeatinterval就算是一次点击。
下面写代码测试一下
import tkinter as tkroot = tk.Tk()v = tk.StringVar()
iClick = 0
v.set(f"点击{iClick}次")def click():global iClickiClick += 1v.set(f"点击{iClick}次")tk.Button(root, height=3, width=15,font = ('黑体', 60, 'bold'), command=click, repeatdelay=1000, repeatinterval=300,textvariable=v).pack(side=tk.TOP, fill=tk.BOTH)root.mainloop()
其含义是,每点击一次,iClick就加一,而按钮自身的设置是,如果按下按钮1000毫秒不松手,那么接下来每隔300毫秒就算一次点击。效果如下

Menubutton
Menubutton的特色当然是设置菜单,所以想用Menubutton,前提是有一个菜单。而在设置菜单过程中,可通过direction属性,来设置菜单位置。如果不设置direction,菜单会出现在按钮的下方,下面将direction设置为另外三个方向
import tkinter as tkroot = tk.Tk()
root.geometry("400x200")def setMenu(root, mb, text):m = tk.Menu(mb)for i in range(3):m.add_command(label=f"{text}{i}")m.add_separator()m.add_command(label="退出", command=root.quit)return mfrm = tk.Frame(root)
frm.place(relx=0.5, rely=0.5, anchor=tk.CENTER)for d in ["above", "left", "right"]:mb = tk.Menubutton(frm, text=d, direction=d)mb.pack(side=tk.LEFT)m = setMenu(root, mb, d)mb.config(menu=m)root.mainloop()
效果如下

Checkbutton
Checkbutton和不同Button相比是多了一个可供勾选的功能,与此同时也就具备了选中和未选中两种状态。这两种状态默认是1和0,但在Checkbutton中,可通过offvalue和onvalue来设置未选中和已经选中的值。
而绑定Checkbutton的选中状态的参数是variable。
root = tk.Tk()
root.geometry("400x200")frm = tk.Frame(root)
frm.place(relx=0.5, rely=0.5, anchor=tk.CENTER)v = tk.StringVar()font = ('黑体', 20, 'bold')
Checkbutton(frm, text="单选框", font=font, variable=v, offvalue="未选中", onvalue="选中了").pack(side=tk.LEFT)
tk.Label(frm, font=font, textvariable=v).pack(side=tk.LEFT)root.mainloop()
效果如下

Radiobutton
Radiobutton可以看成是无法同时选中的多个Checkbutton,所以也通过variable来作为关联变量,作为当前被选中的值。但由于有多个值,所以也就没有类似offvalue和onvalue这样的参数了。
root = tk.Tk()v = StringVar(1)frm = tk.Frame(root)
frm.place(relx=0.5, rely=0.3, anchor=tk.CENTER)font = ('黑体', 20, 'bold')
for i in range(4):Radiobutton(root, text=f"Radio{i}", font=font,variable=v, value=i).pack(side=tk.LEFT)frm = tk.Frame(root)
frm.place(relx=0.5, rely=0.7, anchor=tk.CENTER)
tk.Label(frm, font=font, textvariable=v).pack(side=tk.TOP)root.mainloop()
结果如下

相关文章:
tkinter四大按钮:Button,Checkbutton, Radiobutton, Menubutton
文章目录 四大按钮Button连击MenubuttonCheckbuttonRadiobutton tkinter系列: GUI初步💎布局💎绑定变量💎绑定事件💎消息框💎文件对话框控件样式扫雷小游戏💎强行表白神器 四大按钮 tkinter中…...
Sudowrite:基于人工智能的AI写作文章生成工具
【 产品介绍】 名称 Sudowrite 成立/上线时间 2023年 具体描述 Sudowrite是一个基于GPT-3的人工智能写作工具,可以帮助你快速生成高质量的文本内容, 无论是小说、博客、营销文案还是学术论文。 Sudowrite可以根据你的输入和指…...
加密狗软件有什么作用?
加密狗软件是一种用于加密和保护计算机软件和数据的安全设备。它通常是一个硬件设备,可以通过USB接口连接到计算机上。加密狗软件的作用主要体现在以下几个方面: 软件保护:加密狗软件可以对软件进行加密和授权,防止未经授权的用户…...
嵌入式Linux驱动开发(I2C专题)(二)
I2C系统的重要结构体 参考资料: Linux驱动程序: drivers/i2c/i2c-dev.cI2CTools: https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/ 1. I2C硬件框架 2. I2C传输协议 3. Linux软件框架 4. 重要结构体 使用一句话概括I2C传输:APP通过I2…...
SMT贴片制造:发挥的作用和价值]
SMT贴片制造作为一项重要的电子制造技术,发挥着举足轻重的作用,并提供了巨大的价值。 首先,SMT贴片制造为电子产品的制造商提供了高效、准确和可靠的生产方式。相比于传统的手工焊接,SMT贴片制造具有更高的自动化和智能化程度&am…...
蓝桥杯官网练习题(幸运数字)
问题描述 小蓝认为如果一个数含有偶数个数位,并且前面一半的数位之和等于后面一半的数位之和,则这个数是他的幸运数字。例如 2314 是一个幸运数字, 因为它有 4 个数位, 并且 2314 。现在请你帮他计算从 1 至 100000000 之间共有多少个不同的幸运数字。 …...
pandas笔记:显示中间的省略号
比如我们有这样一个数据(Geolife中的数据) 如何把中间的省略号完整地输出呢? pd.set_option(display.max_rows, None) data...
解决vagrant安装的centos7,在window主机重装系统过后,再次用vagrant启动centos7却无法启动
场景: vagrant安装的centos7,在window主机重装系统过后,再次用vagrant启动centos7却无法启动 检查 VirtualBox 版本:确保你安装的 VirtualBox 版本与 Vagrant 兼容。如果你更新了 VirtualBox,可能需要同时更新 Vagran…...
嵌入式这个领域会变得过于内卷吗?
今日话题,嵌入式这个领域会变得过于内卷吗?嵌入式开发主要服务于第二产业,尤其是制造业,包括电器、电气、机械、汽车、装备、航空航天等行业的“智能制造”部门,稳定性较强,不像互联网行业那样波动大。因此…...
Linux下安装和使用MySQL的详细教程
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
【Linux】多线程互斥与同步
文章目录 一、线程互斥1. 线程互斥的引出2. 互斥量3. 互斥锁的实现原理 二、可重入和线程安全三、线程和互斥锁的封装1. 线程封装1. 互斥锁封装 四、死锁1. 死锁的概念2. 死锁的四个必要条件3. 避免死锁 五、线程同步1. 线程同步的理解2. 条件变量 一、线程互斥 1. 线程互斥的…...
从零开始:云服务器构建网站的完全指南
目录 一、服务器 二、部署项目 三、购买域名 顶级域名 二级域名 子域名 主机名 四、域名解析 一、服务器 国内华为云、阿里云、腾讯云等看你的选择; 可以选择Linux:CentOS、Ubuntu这些系统版本,更稳定; 服务器控制台&a…...
idea中的debug界面上没有进入方法的红色按钮
问题描述: 这里缺少进入系统方法的红色按钮。 问题解决方法: 在上面图片红框范围内右键点击进入。 点击号 搜索 ‘force’ 添加即可完成 上下拖动即可调整界面按钮顺序...
JavaScript知识系列(4)每天10个小知识点
目录 系列文章目录JavaScript知识系列(1)每天10个小知识点JavaScript知识系列(2)每天10个小知识点JavaScript知识系列(3)每天10个小知识点 知识点**31. Promise** 的概念、作用、原理、特性、优点、缺点、区…...
Xpath 访问 Svg 内部的元素
以下是一个例子,获取svg下面的 tspan的元素 //*[local-name()svg and contains(aria-label,"Total_Revenu")]//*[local-name()tspan]...
无涯教程-JavaScript - DOLLARDE函数
描述 DOLLARDE函数将以整数部分和小数部分(如1.02)表示的美元价格转换为以十进制数表示的美元价格。分数美元数字有时用于证券价格。值的小数部分除以您指定的整数。 语法 DOLLARDE (fractional_dollar, fraction)争论 Argument描述Required/OptionalFractional_dollarA nu…...
C语言双向链表
文章目录 前言双向链表链表头结点的创建节点尾插与尾删节点头插与头删特定位置插入或删除节点链表节点查找双向链表的销毁 链表的打印 前言 假期时间因为为学校开学考试做准备所以一直没更新博客,今天开始博客会陆续更新。 双向链表 之前我们说过了顺序表和单链表…...
朋友圈大佬都去读研了,这份备考书单我码住了
作者简介: 辭七七,目前大二,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖…...
JavaScript设计模式(五)——发布订阅模式、桥接模式、组合模式
个人简介 👀个人主页: 前端杂货铺 🙋♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…...
prize_p1
文章目录 解题过程代码审计思路问题解决数组绕过preg_match__destruct的触发修改phar文件以及签名phar://支持的后缀 题解方法一(数组绕过)方法二(gzip绕过) 解题过程 源代码 <META http-equiv"Content-Type" conte…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...
Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
