https://baijiahao.baidu.com/s?id=1635584231414557909&wfr=spider&for=pc

在Python GUI编程中,控件响应事件处理是常用的操作。tkinter库中事件类型有哪些?事件绑定方式有几种?如何编写事件处理函数?这些都是必须要面对的问题。今天,我们对上述内容进行简要汇总。

正在上传…重新上传取消事件处理方式及类型汇总

事件类型

用户通过鼠标、键盘、游戏控制设备在与图形界面交互时,就会触发事件。tkinter事件通常采用了将事件名称放置于尖括号内的字符串表示,尖括号中的内容我们称之为事件类型。事件类型有其通用的定义方式。如下

<[modifier-]…type[-detail]>

其中方括号内的内容为可选参数

modifier为组合键的定义,例如,同时按下Ctrl键;

type为通用类型,例如,键盘按键(KeyPress)

detail用于具体信息,如按下键盘中‘B’键

常用事件类型如下:

【鼠标单击事件】

<Button-1>:单击鼠标左键<Button-2>:单击鼠标中间键(如果有)<Button-3>:单击鼠标右键<Button-4>:向上滚动滑轮<Button-5>:向下滚动滑轮【鼠标双击事件】

<Double-Button-1>:鼠标左键双击<Double-Button-2>:鼠标中键双击<Double-Button-3>.:鼠标右键双击【鼠标释放事件】

<ButtonRelease-1>:鼠标左键释放<ButtonRelease-2>:鼠标中键释放<ButtonRelease-3>:鼠标右键释放【鼠标按下并移动事件(即拖动)】

<B1-Motion>:左键拖动<B2-Motion>:中键拖动<B3-Motion>:右键拖动【鼠标其他操作】

<Enter>:鼠标进入控件(放到控件上面)<FocusIn>:控件获得焦点<Leave>:鼠标移出控件<FocusOut>:控件失去焦点【键盘按下事件】

<Key>:键盘按下,事件event中的keycode,char都可以获取按下的键值<Return>:键位绑定,回车键,其它还有<BackSpace>,<Escape>,<Left>,<Up>,<Right>,<Down>等等【控件属性改变事件】

<Configure>:控件大小改变,新的控件大小会存储在事件event对象中的 width 和 height 属性传递,部分平台上该事件也代表控件位置改变。

【组合使用】

<Control-Shift-Alt-KeyPress-A>:同时按下Ctrl+Shift+Alt+A等4个键<KeyPress-A>:按下键盘中的'A'键游戏设备使用参见设备供应商提供的API函数,这里不再赘述,常用的事件类型就是这些了。大家没有必要全部记住,这些事件都是一种类英文的描述,只要记住主要的几个,按照<[modifier-]…type[-detail]>进行组合就可以了。

事件绑定

常见的事件绑定有以下几类

【创建组件对象实例时指定】

创建组件对象实例时,可以通过其命名参数command指定事件处理函数,如为Button控件绑定单击时间,当控件被单击时执行clickhandler函数处理

b = Button(root, text='按钮', command=clickhandler)

【实例绑定】

调用组件对象实例方法bind,可以为指定组件实例绑定事件

w.bind('<event>', eventhandler, add='')

其中,<event>为事件类型,eventhandler为事件处理函数,可选参数add默认为'',表示事件处理函数替代其他绑定,如果为‘+’,则加入事件处理队列。

如绑定组件对象,使得Canvas组件实例c可以处理鼠标右键单击事件(处理函数名称为eventhandler),代码如下:

c=Canvas(); c.bind('Button-3', eventhandler)

【类绑定】

调用组件对象实例方法bind_class函数,可以为特定类绑定事件

w.bind_class('Widget', '<event>', eventhandler, add='')

其中,Widget为组件类;<event>为事件;eventhandler为事件处理函数

如绑定组件类,使得所有Canvas组件实例可以处理鼠标中键事件(事件处理函数为eventhandler)

c = Canvas(); c.bind_class('Canvas', '<Button-2>', eventhandler)

【程序界面绑定】

调用组件对象实例方法bind_all函数,可以为所有组件类型绑定事件

w.bind_all('<event>', eventhandler, add='')

同上,其中<event>为事件;eventhandler为事件处理函数

如将PrintScreen键与程序中所有组件对象绑定,使得程序界面能处理打印屏幕的键盘事件

c = Canvas(); c.bind('<Key-Print>', printscreen)

事件处理函数的编写

【定义事件函数和事件方法】

对于能通过command传入的函数,其参数没有必须指定第一个参数为event的要求。但是通过bind(含bind_class、bind_all,当然,bind_class第一个参数为className,但其后必须是Event实例)绑定的事件,在定义函数方法时(事件处理可以定义为函数,也可以定义为对象的方法),两者都带一个参数event。触发事件调用处理函数时,将传递Event对象实例。

# 函数定义

def handlerName(event):

函数内容

# 类中定义

def handlerName(self, event):

方法内容

【Event事件对象参数属性】

通过传递Event事件对象的属性,可以获取相关参数备程序使用。常用的Event事件参数有以下几种。

widget:产生该事件的控件x, y:当前鼠标位置x_root, y_root:当前鼠标相对于屏幕左上角(0,0)的位置,以像素px为单位。char:字符代码(限键盘事件),作为字符串返回keysym:关键符号(限键盘事件)keycode:关键代码(限键盘事件)num:按钮号码(限鼠标按钮事件)width, height:小部件的新大小(以像素px为单位)(限配置事件)。type:事件类型【实例演示】

下面通过一个实例进行演示,代码如下。

转存失败重新上传取消实例演示源代码

程序运行效果图

转存失败重新上传取消

python GUI 绑定事件相关推荐

  1. python鼠标选中事件_python对绑定事件的鼠标、按键的判断实例

    当多个事件绑定了同一个命令,那么在命令内部根据不同的事件进行处理的时候,怎么确定哪个事件发生了呢,用下面的来检测,经过测试处理tab键和alt键不能识别,其他单个都能被识别. 还有个事件的type属性 ...

  2. python bind绑定失败_Python tkinter之Bind(绑定事件)的使用示例

    1.绑定鼠标事件并获取事件属性 # -*- encoding=utf-8 -*- import tkinter from tkinter import * def left_mouse_down(ev ...

  3. python bind_Python tkinter之Bind(绑定事件)的使用示例

    1.绑定鼠标事件并获取事件属性 # -*- encoding=utf-8 -*- import tkinter from tkinter import * def left_mouse_down(ev ...

  4. Python笔记_64_Vue_M-V-VM思想_显示数据_常用指令_操作属性_绑定事件_操作样式_条件渲染指令_列表渲染指令

    文章目录 Vue vue.js的M-V-VM思想 快速使用 显示数据 常用指令 操作属性 绑定事件 操作样式 条件渲染指令 列表渲染指令 Vue vue.js是目前前端web开发最流行的工具库,由尤雨 ...

  5. wxPython和PyQt谁才是最赞的Python GUI库?

    Python是一种解释型.面向对象.动态数据类型的高级程序设计语言,Python GUI图形库允许Python程序员很方便的创建完整的.功能键全的GUI用户界面.作为Python开发者,你迟早都会用到 ...

  6. Python GUI编程(Tkinter)笔记

    Python GUI编程Tkinter笔记 1 显示任意格式图片 2 固定框架Frame大小 3 选择文件夹或文件 4 展示菜单栏 5 展示选择的图片 1 显示任意格式图片 Tkinter只支持显示G ...

  7. Python GUI篇——关不掉的小窗口

    Python GUI篇--关不掉的小窗口 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不知道如何去学习更加高 ...

  8. Python GUI界面编程-初识

    图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面.与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上 ...

  9. Python界面编程第二课:Pyside2 创建窗口 (Python GUI)

    Pyside2 创建窗口 (Python GUI) – 在这篇Pyside2文章中,会演示如何创建窗口,学习本课之前请先看第一课<我们开始用Pyside2 (Qt For Python)> ...

最新文章

  1. ogre3d环境配置与简单程序示例
  2. 解题报告(一)E、(BZOJ4589)Hard Nim(博弈论 + FWT)
  3. 数值格式化,每隔三位加一个逗号
  4. vue切换路由时动画
  5. Windows内核启动开关/3GB和win10下boot.ini文件问题
  6. Linux内核BPF学习1
  7. Thymeleaf引入公共片段方式
  8. python随机生成k个不重复的随机数_python 生成不重复的随机数的代码
  9. 卷积神经网络 训练的结果是什么_射击训练:卷积神经网络识别解剖结构标志位点...
  10. 7.3.3 多路复用IO(IO multiplexing)
  11. 【报告分享】2020年中国企业直播服务市场研究报告.pdf(附下载链接)
  12. 28. 实现strStr()
  13. msxml6_x64 下载
  14. can和could的用法_情态动词can与could用法归纳
  15. 句子成分划分(口诀符号及方法)
  16. 张三的酸奶厂:C++用贪心算法解POJ2393_Yogurt factory问题
  17. ora-04030 进程内存不足解决方案
  18. 如何用power bi做库存周转率分析?
  19. 电脑网络能用,但是无法访问网页问题
  20. Happy May Day

热门文章

  1. mc服务器怎么传送到我位置,我的世界手机版怎么传送到坐标
  2. 用matlab的数据绘图,[精品]MATLAB常用数据绘图示例 -工程
  3. Scanner使用中缓冲区清空
  4. 【无标Unity基于ShaderLab实现光照系统(着色器代码实现小结)
  5. 拼多多API、淘宝API、1688API各大电商平台618关键词API接口展示
  6. 开放式耳机好用吗,盘点几款口碑不错的开放式耳机
  7. python进行文件运行手机_手机上面如何运行Python
  8. SpringBoot--首页和图标定制
  9. 【Python入门】Turtle海龟库:利用海龟画笔绘制简单图形(1)
  10. 微信小程序 执行 wx.reLaunch 后,点击事件失效【已解决,亲测有效】