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

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

我是猫妹,一名爱上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表示该事件类型是否可以同时绑定多个处理函数

参考代码:

怎么样?

你学会了吗?

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

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

我是猫妹,咱们下次见!

猜你喜欢

转载自blog.csdn.net/parasoft/article/details/131651792