类型符
事件类型有很多,下面列出较常用的类型符:
Activate
构件从无效状态变成激活状态。
Button
用户点击鼠标按键。具体按键用细节符描述。
ButtonRelease
用户释放鼠标按键。在多数情况下用这个事件可能比 Button 更好,因为如果用户无意 点击了鼠标,可以将鼠标移开构件再释放,这样就不会触发该构件的点击事件。
Configure
用户改变了构件(主要是窗口)大小。
Deactivate
构件从激活状态变成无效状态。
Destroy
构件被撤销。
Enter
用户将鼠标指针移入构件的可见部分。
FocusIn
构件获得输入焦点。通过 Tab 键或 focus_set()方法可使构件获得焦点。
FocusOut
输入焦点从构件移出。
KeyPress
用户按下键盘上的某个键。可简写为 Key。具体按键用细节符描述。
KeyRelease
Leave
用户将鼠标指针移开构件。
Motion
用户移动鼠标指针。
修饰符
下面是常用的修饰符:
Alt
用户按下并保持 alt 键。
Control
用户按下并保持 control 键。
Double
在短时间内连续发生两次事件。例如
Shift
用户按下并保持 shift 键。
Triple
在短时间内连续发生三次事件。
细节符
鼠标事件的细节符用于描述具体绑定的是哪一个鼠标键,1、2、3 分别表示左、中、右 键。
键盘事件的细节符用于描述具体绑定的是哪一个键。对键的命名有多种方式,它们分别对应于 Event 对象中的如下几个属性:
char
如果按下 ASCII 字符键,此属性即是该字符;如果按下特殊键,此属性为空串。
keycode
键码,即所按键的编码。注意,键码未反映修饰符的情况,故无法区分该键上的不同字 符,即它不是键上字符的编码,故 a 和 A 具有相同的键码。
键符。如果按下普通 ASCII 字符键,键符即是该字符;如果按下特殊键,此属性设置 为该键的名称(是个字符串)。
keysym_num
键符码,是等价于 keysym 的一个数值编码。对普通单字符键来说,就是 ASCII 码。与 键码不同的是,键符码反映了修饰符的情况,因此 a 和 A 具有不同的键符码。
除了可打印字符,常见的特殊按键的键符包括:Alt_L,Alt_R,BackSpace,Cancel, Caps_Lock,Control_L,Control_R,Delete,Down,End,Escape,F1~F12,Home,Insert, Left,KP_0~KP_9,Next,Num_Lock,Pause,Print,Prior,Return,Right,Scroll_Lock, Shift_L,Shift_R,Tab,Up 等等。
常用事件
根据以上介绍的事件描述符的组成,可以构造如下常用事件:
:左键点击 :中键点击 :右键点击 :左键双击 :左键三击 :左键按下并移动,每移一点都触发事件 :右键按下并移动,每移一点都触发事件 :左键按下并释放 :中键按下并释放 :右键按下并释放 :进入按钮区域 :离开按钮区域 :键盘焦点从本构件移出 a:用户按下小写字母“a” 可打印字符(字母、数字和标点符号)都类似字母 a 这样使用。只有两个例外:空格键 对应的事件 ,小于号对应的事件是 。 :同时按下 Shift 键和↑键。 - 与
类似的还有利用 Shift、Alt 和 Ctrl 构成的各种组合键,例如 , 等等。 :按下任意键。 - 具体按下的键值由传递给回调函数的事件对象的 char 属性提供。如果是特殊键,char 属性值为空串。注意,如果输入上档键(如@#$%^&*之类),当按下 Shift 键时就触发了
事件,再按下上档键又会触发 。
事件对象
每个事件都导致系统创建一个 Event 对象,该对象将被传递给事件处理程序,从而事件 处理函数能够从该对象的属性获得有关事件的各种信息。事件对象的属性包括:
x,y
鼠标点击位置坐标(相对于构件左上角),单位是像素。
x_root,y_root
鼠标点击位置坐标(相对于屏幕左上角),单位是像素。
num char
鼠标键编号,1、2、3 分别表示左、中、右键。
如果按下 ASCII 字符键,此属性即是该字符;如果按下特殊键,此属性为空串。
keycode
所按键的编码。注意,此编码无法区分该键上的不同字符,即它不是键上字符的编码。
keysym
如果按下普通 ASCII 字符键,此属性即是该字符;如果按下特殊键,此属性设置为该 键的名称(是个字符串)。
keysym_num:这是 keysym 的数值表示。对普通单字符键来说,就是 ASCII 码。
width,height
构件改变大小后的新尺寸(宽度和高度),单位是像素。仅适用于
widget