Python Tkinter事件处理

使用python的Tkinter库,可以开发简单的桌面应用,用户对软件的操作,例如用鼠标点击软件上的某个按钮,在输入框里输入内容,这些行为被称之为事件。

一个事件,会触发软件来执行一段代码来响应用户的操作,这便是人机交互的关键。在Tkinter库里,通过为控件绑定事件和处理函数来实现与人的交互。

1. Tkinter事件绑定语法

将事件与控件绑定,需要使用bind方法,该方法有两个参数

  1. sequence,一个字符串,描述所监听事件的详细信息,格式为
  2. func 函数,事件被触发后需要执行的函数,这个函数不是可以随便定义的,它只有一个参数envent

下面的程序演示如何为Label控件绑定鼠标点击事件

from tkinter import *

window = Tk()

def mouseClick(event):
    print("点击鼠标")


label = Label(window, text="点击我")
label.pack()
label.bind("<Button>", mouseClick)

window.mainloop()

运行程序,在Label上点击,控制台会输出“点击鼠标”

2. 事件类型

不同的事件类型,对应着不同的操作,下面是Tkinter事件类型的一部分

  1. KeyPress 键盘的按键被按下时激活
  2. KeyRelease 键盘的按键按下后松开时激活
  3. Button 点击鼠标时激活
  4. ButtonRelease 点击鼠标后松开时激活
  5. Motion 鼠标的光标在控件上移动时激活
  6. Enter 鼠标光标进入控件时激活
  7. Leave 鼠标光标离开控件时激活
  8. MouseWheel 鼠标滑轮滚动时激活
  9. FocusIn 控件获得焦点时激活,例如鼠标点击输入控件开始进行输出
  10. FocusOut 控件失去焦点时激活,例如鼠标离开了输入框
  11. Configure 控件的配置发生改变,例如大小变化时激活

3. 事件修饰符

事件装饰符可以修改事件激活的条件,例如要求事件发生时,比如按下某个按钮才成立

  1. Control 事件发生时需按下Control按钮
  2. Alt 事件发生时需按下Alt按钮
  3. Shift 事件发生时需按下Shift按钮
  4. Lock 事件发生时需处于大写锁定状态
  5. Double 事件连续发生两次,例如双击鼠标
  6. Triple 连续发生3次
  7. Quadruple 连续发生4次

给Label绑定鼠标双击事件,就可这样编写代码

label.bind("<Double-Button>", mouseClick)

4. 事件详情

detail部分,可以对事件做出更详细的规定,例如点击鼠标事件,可以指定是鼠标左键,还是右键。

label.bind("<Button-1>", mouseClick)     # 左键
label.bind("<Button-3>", mouseClick)     # 右键
window.bind("<KeyPress-p>", key) 

只有按下p按钮时,才会触发KeyPress事件。

5. 事件对象

事件触发后执行的函数,只有事件对象一个参数,事件对象包含了如下信息

  1. keysym 触发事件的键盘按钮
  2. keycode 触发基于键盘的事件的键的代码
  3. button 返回触发基于鼠标的事件的鼠标按钮(1-5)
  4. x, y 事件所在位置的x,y坐标
  5. width, height 关联控件的宽与高

扫描关注, 与我技术互动

QQ交流群: 211426309

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案