[python]Tkinter中的event

1、事件

在Tkinter中事件使用<[modifier-]...type[-detail]>格式的字符串描述的。其中type是事件类型,比如键盘按下(Key)、鼠标(Motion/Enter/Leave/Relase)等。modifier事件修饰符,最常见的是Alt、Shit组合键和Double事件。detail描述哪个键盘按钮或者鼠标按钮。

<Button-1>:鼠标左击事件

<Double-Button-1>:双击事件

<B2-Motion>:鼠标移动事件

<ButtonRelease-1>:鼠标释放事件

<Enter>:鼠标进入事件

<Leave>:鼠标离开时产生的事件

<BackSpace> <Return> <F5> <Shift_L> <Shift_R>:特殊键事件

<Key>:所有的键按键事件

<a> <space> <less> :A、空格、<对应键的事件

<Shift-Up> <Control-Alt-a> 组合键事件

<Configure>大小改变事件

2、事件处理

事件处理是当事件发生时控件的响应函数。

# 函数

def handle(event):

        pass

# 或者类的一个方法

def handle(self, event):

        pass

event是事件的一个实例,常用的属性有:

.type:事件类型,字符串,即事件字符串中的type。

.char:用于键盘事件,表示按下键的ascii码。

.keycode:用于键盘事件,表示键盘代码。

.delta:用于描述鼠标滚动事件,表示滚轮滚动的距离。

3、自定义事件

自定义事件字符串,是包含在书名号中,比如<< Complete >>。在自定义事件中,需要用代码触发事件,使用self.generate_event('<<Complete>>'

4、事件绑定

事件绑定是当一个事件发生时某个控件能够做出响应。可以将多个事件绑定到同的组件。

共有三种不同层次的绑定方式。

实例绑定bind:绑定在某一个控件上。

类型绑定bind_class:绑定在某一个类型控件上。

应用绑定bind_all:绑定在所有控件上。

# 在instance级别与printEvent绑定

bt1 = Button(root,text = 'instance event')

bt1.bind('<Return>',printEvent)

# 在bt1的Toplevel级别与printToplevel绑定

bt1.winfo_toplevel().bind('<Return>',printToplevel)

# 在class级别绑定事件printClass

root.bind_class('Button','<Return>',printClass)

# 在application all级别绑定printAppAll

bt1.bind_all('<Return>',printAppAll)

#使用protocal绑定

# 使用protocol将WM_DELETE_WINDOW与printProtocol绑定

root.protocol('WM_DELETE_WINDOW',printProtocol)


你可能感兴趣的:(python,event,tkinter)