小朋友们好,大朋友们好!
我是猫妹,一名爱上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表示该事件类型是否可以同时绑定多个处理函数
参考代码:
怎么样?
你学会了吗?
好了,我们今天就学到这里吧!
如果遇到什么问题,咱们多多交流,共同解决。
我是猫妹,咱们下次见!