Python GUI编程利器:Tkinker中的事件处理(11)

news2024/9/22 13:29:44

小朋友们好,大朋友们好!

我是猫妹,一名爱上Python编程的小学生。

和猫妹学Python,一起趣味学编程。

今日目标

学习下事件处理的相关知识点:

事件处理四要素

事件序列

事件绑定

今天要实现如下效果:

事件处理的四要素

时间处理是GUI应用程序必需的组成部分,有4要素,分别为事件、事件类型、事件源、事件处理者。

事件

图形用户界面的每个动作都会触发事件,它是用户对界面的操作,常用的事件包括键盘事件、鼠标事件、窗体事件。

Tkinter中,事件被封装成事件类,即Event类。

事件类型

用来表示事件的详细信息。

事件源

事件发生的场所。

事件处理者

事件类型绑定的处理函数

事件序列

Tkinter使用一种被称为事件序列的机制来允许用户定义事件。

事件序列包含了一个或多个事件类型的字符串,每个事件类型关联了一项事件,事件序列的格式如下:

<[modifier]type[-detail]>

modifier是可选部分,表示组合键。

取值有Any(任意类型按键),Alt,Control,Shift,Lock,Double(当前事件被触发2次),Triple(当前事件被触发3次)。

type表示事件类型。

detail是可选部分,描述具体的按键。比如:

<Button-1>:单击

<Double-Button-1>:双击

<KeyPress-A>:按下键盘的A键

<Double-KeyPress-a>:按两下键盘的a键

<Control-Shift-KeyPress-A>:同时按下Control,Shift,A键

事件绑定

TKinter中,事件绑定的方式有4种,command,bind,bind_class,bind_all等。

控件的参数command

适合简单的事件绑定,不需要获取event事件

有时不需要传递参数,有时候需要传递参数

传递参数可以使用lamda表达式,或自定义类

参考代码:

bind()方法

用户将事件和特定的控件绑定,语法如下

bind(sequence,func,add)

sequence表示事件序列
func事件类型绑定的处理函数

add事件类型是否可以同时绑定多个处理函数

参考代码:

bind_class()方法

用于将事件和控件类进行绑定,语法格式如下:

bind_class(className,sequence,func,add)

className表示控件的类名

sequence表示事件序列

func表示事件类型绑定的处理函数

add表示该事件类型是否可以同时绑定多个处理函数

参考代码:

bind_all()方法

用于程序界面绑定事件,即只要程序获得焦点,就会根据绑定的事件做出相应的处理。

语法如下:

bind_all(sequence,func,add)

sequence表示事件序列

func表示事件类型绑定的处理函数

add表示该事件类型是否可以同时绑定多个处理函数

参考代码:

怎么样?

你学会了吗?

好了,我们今天就学到这里吧!

如果遇到什么问题,咱们多多交流,共同解决。

我是猫妹,咱们下次见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/739957.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java在Excel中进行数据分析

摘要&#xff1a;本文由葡萄城技术团队于CSDN原创并首发。转载请注明出处&#xff1a;葡萄城官网&#xff0c;葡萄城为开发者提供专业的开发工具、解决方案和服务&#xff0c;赋能开发者。 前一段时间淘宝出了一个“淘宝人生”的模块&#xff0c;可以看从注册淘宝账号至今的消…

k8s实战3-使用Helm在AKS上发布应用

AKS(Azure Kubenetes Service)是微软云azure上的K8s服务。 主要分为三步 1 连接到AKS 2 用kubectl发布应用 3 用Helm发布应用 1 登录 az login 2 连接dp-npr-dsm-aks&#xff08;Dsm项目的AKS&#xff09; az account set --subscription {{subID}} az aks get-credent…

指针的进阶(一)

目录 1. 字符指针 方法一 方法二 字符指针面试题 2. 指针数组 3. 数组指针 3.1 数组指针的定义 3.2 &数组名VS数组名 3.3 数组指针的使用 4. 数组传参和指针传参 4.1 一维数组传参 4.2 二维数组传参 4.3 一级指针传参 4.4 二级指针传参 5. 函数指针 代码一 代…

Windows用户怎么取消访问共享文件夹的密码

许多Windows系统用户在访问共享文件夹的时候却提示需要输入密码才可访问。这一步给很多人造成了困扰&#xff0c;其实我们可以取消访问共享文件夹密码。请看下面的两个方法。 方法一&#xff1a; 搜索 网络和共享中心。点击 更改高级共享设置。在最底下密码保护的共享那项&…

用C#写汉诺塔问题

假设要将n个圆盘从A->C&#xff0c;中间可以借助B&#xff0c;那么递归思路是这样的&#xff0c;我们先将除最大的一个圆盘外的其它n-1个圆盘从A->B,借助C&#xff0c;然后将最大的一个圆盘搬到C&#xff0c;最后将刚才的n-1个盘子&#xff0c;从B->C借助A&#xff0c…

Qt完成闹钟提示

未启动: 启动&#xff1a; .cpp #include "widget.h" #include "ui_widget.h"void Widget::btn1_slots() {//点击启动开始定时event_timer this->startTimer(1000);btn1->setEnabled(false);btn2->setEnabled(true);edit2->setEnabled(false…

一个月学通Python(十三):高级Python必须掌握的进阶知识点

专栏介绍 结合自身经验和内部资料总结的Python教程,每天3章,1个月就能全方位的完成Python的学习并进行实战开发。加油吧!卷起来! 全部文章请访问专栏:《Python全栈教程(0基础》 文章目录 专栏介绍Python语言进阶1. 数据结构和算法2. 函数的使用方式3. 面向对象相关知识…

Todo-List案例版本五

安装库npm i pubsub-js 消息的订阅与发布 src/App.vue <template><div class"app"><h1>{{ msg }}</h1><School/><Student/></div> </template><script> import Student from ./components/Student import …

微信小程序常用组件的简单使用 view,scroll-view,swiper,swiper-item,text,rich-text,button,image

微信小程序常用组件的简单使用 1. view组件2. scroll-view 组件3. swiper 和 swiper-item 组件3.1. swiper组件中的常用属性 4. text 和 rich-text组件4.1. text组件4.2. rich-text 组件 5. button 组件6. image组件6.1. image的mode属性 1. view组件 view组件就类似于html中的…

问题总结(持续更新,欢迎补充)

文章目录 前言webshell流量特征内存马蜜罐应急响应Windows 事件ID如何是误报还是攻击&#xff08;如何判断是否攻击成功&#xff09;研判的思路渗透测试思路内网渗透相关溯源反制反序列化&#xff08;Shiro、Weblogic、Log4j&#xff09;CDNMySQL5.5版本以上和以下读写权限的区…

linux 系统errno 对应参考及代码

结论 linux下系统errno都有对应的说明描述&#xff0c;发生错误时获取errno即可知道具体问题描述 如下图 代码如下 golang版 package main import ("syscall""strings""fmt" ) func main() {for i : 0; i < 200; i {if !strings.HasPrefi…

【开源项目】自动化运维平台spug

Spug 基本介绍 Spug是面向中小型企业设计的轻量级无Agent的自动化运维平台&#xff0c;整合了主机管理、主机批量执行、主机在线终端、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能。 批量执行: 主机命令在线批量执行在线终端: 主机支持浏览器在线终端登录…

为什么技术牛逼的人,不能直接提为项目经理?

早上好&#xff0c;我是老原。 很多来私信我职业规划的小友&#xff0c;有很大一部分都是从事了大几年&#xff0c;10年的技术开发大佬…… 到这个层级的大佬&#xff0c;他们最大的困惑是&#xff1a;到我这个年纪/级别还有必要转管理吗&#xff1f; 是否有必要&#xff0c…

X6 基于VUE流程编辑器开发

先看效果图 主要插件X6 x6-vue-shape antv/x6-plugin-dnd 代码太多没有整理出来

个人云服务器搭建MQTT服务器

个人云服务器搭建MQTT服务器 文章目录 个人云服务器搭建MQTT服务器1️⃣ 前言2️⃣ EMQX部署 1️⃣ 前言 MQTT &#x1f449;MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;即消息队列遥测传输协议 • 是一个轻量的发布订阅模式消息传输协议&#xff0c;专门…

leetcode140. 单词拆分 II 记忆化DFS

https://leetcode.cn/problems/word-break-ii 给定一个字符串 s 和一个字符串字典 wordDict &#xff0c;在字符串 s 中增加空格来构建一个句子&#xff0c;使得句子中所有的单词都在词典中。以任意顺序 返回所有这些可能的句子。 注意&#xff1a;词典中的同一个单词可能在分…

趣谈拜占庭将军问题

拜占庭将军问题&#xff08;The Byzantine Generals Problem&#xff09;&#xff0c;它其实是借拜占庭将军的故事展现了分布式共识问题&#xff0c;还探讨和论证了解决的办法。而大多数人觉得它难理解&#xff0c;除了因为分布式共识问题比较复杂之外&#xff0c;还与莱斯利兰…

【C++ OJ练习】6.验证回文串

1.题目链接 力扣 2.解题思路 字母全部要变成小写 并且不能管空格和标点 这样从前和后分别遍历并进行比较 如果遇到不是相同 字符的话 说明不是回文串 就这样一直往下走 直到最后两下标相遇 那么就是回文串 注意双循环条件 3.代码 class Solution { public://除去标点和空…

【如何在深度学习的道路上越走越远?——《深度学习模式与实践》】

作为近几年人工智能领域的主要研究方向之一&#xff0c;深度学习主要通过构建深度卷积神经网络和采用大量样本数据作为输入&#xff0c;最终得到一个具有强大分析能力和识别能力的模型。深度学习可以是有监督的、半监督的或无监督的。深度学习架构(例如深度神经网络、深度信念网…

Docker查看相关存储信息以及扩容

Docker查看相关存储信息以及扩容 &#xff08;mac环境&#xff09; 查看docker基本信息&#xff1a; docker info可以看到docker的存储位置在这里 2. 查看mac的所有盘以及分区大小情况 diskutil listdocker查看网络信息&#xff1a; docker ps # 查看所有在运行的container信…