Python-Tkinter
事件处理
所谓
event
事件就是程序上发生的事。例如用户敲击键盘上的某一个键或是点
击移动鼠标。而对于这些事件,程序需要做出反应。
Tkinter
提供的组件通常
都包含许多内在行为,例如当按钮
所谓
event
事件就是程序上发生的事。例如用户敲击键盘上的某一个键或是
点击移动鼠标。而对于这些事件,程序需要做出反应。
Tkinter
提供的组件通常都包含许多内在行为,
例如当按钮被点击时执行特定
操作或是当一个输入栏成为焦点,
而您又敲击了键盘上的某些按键,
您所输入的
内容就会显示在输入栏内。
不过,
Tkinter
的事件处理允许您创建、修改或是删除这些行为。
首先给出如下定义:
事件处理者:程序中在当事件发生时被调用的某个函数。
当您为您的程序建立一个处理某一事件的事件处理者,称之为绑定。
绑定级别:
三个级别:
实例绑定:将事件与一特定的组件实例绑定。例如您可以将按下
PageUp
按
键这一事件与一个
Canvas
组件实例绑定,
来处理
Canvas
的翻页。
调用组件实例
的
.bind()
函数为组件实例绑定事件。例如,假设您声明了一个名为
canvas
的
Canvas
组件对象。您想在
canvas
上,当按下鼠标中键时画上一条线。您可以这
样实现:
canvas.bind(“
-
2>”, drawline)
其中
bind
函数的第一个参数是事件描述符,他指定无论什么时候在
canvas
上,
当按下鼠标中键时就调用事件处理函数
drawline
进行画线的任务。特别的是:
drawline
后面的圆括号是省略的。
Tkinter
会将此函数填入相关参数后调用运行。
在这里只是连结性声明而以。
类绑定:
将事件与一组件类绑定。
例如您可以绑定按钮组件类,
使得所有按
钮实例都可以处理鼠标中键事件作相应的操作。
调用任意组件实例的
.bind_class()
函数为特定组件类绑定事件。例如,假设您声明了若干个
Canvas
组件对象。您
想在这些对象上,当按下鼠标中键时都能画上一条线。您可以这样实现:
widget.bind_class(“Canvas”, “
-
2>”, drawline)
其中
widget
是任意组件对象。
程序界面绑定:当无论在哪一组件实例上触发某一事件,程序都作出相应
的处理。例如您可能会将
PrintScreen
键与程序中的所有组件对象绑定,这样的
话整个程序界面就能处理打印屏幕的事件了。调用任意组件实例的
.bind_all()
函
数为程序界面绑定事件。例如您可以这样实现打印屏幕:
widget.bind_all( “
-
print>”,printScreen)
。
事件队列:
Tkinter
为您定义正确的事件提供了强大的通用方式。一般来说,事件队列
是包含了一个或多个事件类型的字符串。
每一个事件类型指定了一项事件,
当有
多项事件类型包含于事件队列中,
当且仅当描述符中全部事件发生时才调用处理
函数。
事件类型的通用格式: