🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 3.5 事件 事件描述符是一个字符串,由修饰符、类型符和细节符三个部分构成: ``` <修饰符>-<类型符>-<细节符> ``` 类型符 事件类型有很多,下面列出较常用的类型符: Activate 构件从无效状态变成激活状态。 Button 用户点击鼠标按键。具体按键用细节符描述。 ButtonRelease 用户释放鼠标按键。在多数情况下用这个事件可能比 Button 更好,因为如果用户无意 点击了鼠标,可以将鼠标移开构件再释放,这样就不会触发该构件的点击事件。 Configure 用户改变了构件(主要是窗口)大小。 Deactivate 构件从激活状态变成无效状态。 Destroy 构件被撤销。 Enter 用户将鼠标指针移入构件的可见部分。 FocusIn 构件获得输入焦点。通过 Tab 键或 focus_set()方法可使构件获得焦点。 FocusOut 输入焦点从构件移出。 KeyPress 用户按下键盘上的某个键。可简写为 Key。具体按键用细节符描述。 KeyRelease 用户松开按键。 Leave 用户将鼠标指针移开构件。 Motion 用户移动鼠标指针。 修饰符 下面是常用的修饰符: Alt 用户按下并保持 alt 键。 Control 用户按下并保持 control 键。 Double 在短时间内连续发生两次事件。例如&lt;Double-Button-1&gt;表示快速双击鼠标左键。 Shift 用户按下并保持 shift 键。 Triple 在短时间内连续发生三次事件。 细节符 鼠标事件的细节符用于描述具体绑定的是哪一个鼠标键,1、2、3 分别表示左、中、右 键。 键盘事件的细节符用于描述具体绑定的是哪一个键。对键的命名有多种方式,它们分别对应于 Event 对象中的如下几个属性: char 如果按下 ASCII 字符键,此属性即是该字符;如果按下特殊键,此属性为空串。 keycode 键码,即所按键的编码。注意,键码未反映修饰符的情况,故无法区分该键上的不同字 符,即它不是键上字符的编码,故 a 和 A 具有相同的键码。 keysym 键符。如果按下普通 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 等等。 常用事件 根据以上介绍的事件描述符的组成,可以构造如下常用事件: + &lt;Button-1&gt;:左键点击 + &lt;Button-2&gt;:中键点击 + &lt;Button-3&gt;:右键点击 + &lt;Double-Button-1&gt;:左键双击 + &lt;Triple-Button-1&gt;:左键三击 + &lt;B1-Motion&gt;:左键按下并移动,每移一点都触发事件 + &lt;B2-Motion&gt;:中键按下并移动,每移一点都触发事件 + &lt;B3-Motion&gt;:右键按下并移动,每移一点都触发事件 + &lt;ButtonRelease-1&gt;:左键按下并释放 + &lt;ButtonRelease-2&gt;:中键按下并释放 + &lt;ButtonRelease-3&gt;:右键按下并释放 + &lt;Enter&gt;:进入按钮区域 + &lt;Leave&gt;:离开按钮区域 + &lt;FocusIn&gt;:键盘焦点移到构件或构件的子构件上 + &lt;FocusOut&gt;:键盘焦点从本构件移出 a:用户按下小写字母“a” 可打印字符(字母、数字和标点符号)都类似字母 a 这样使用。只有两个例外:空格键 对应的事件&lt;space&gt;,小于号对应的事件是&lt;less&gt;。 + &lt;Shift-Up&gt;:同时按下 Shift 键和↑键。 + 与&lt;Shift-Up&gt;类似的还有利用 Shift、Alt 和 Ctrl 构成的各种组合键,例如&lt;Control-a&gt;, + &lt;Control-Alt-a&gt;等等。 + &lt;Key&gt;:按下任意键。 + 具体按下的键值由传递给回调函数的事件对象的 char 属性提供。如果是特殊键,char 属性值为空串。注意,如果输入上档键(如@#$%^&*之类),当按下 Shift 键时就触发了&lt;Key&gt; 事件,再按下上档键又会触发&lt;Key&gt;。 + &lt;Configure&gt;:构件改变大小或位置。构件的新尺寸由事件对象的 width 和 height 属性传递。 事件对象 每个事件都导致系统创建一个 Event 对象,该对象将被传递给事件处理程序,从而事件 处理函数能够从该对象的属性获得有关事件的各种信息。事件对象的属性包括: x,y 鼠标点击位置坐标(相对于构件左上角),单位是像素。 x\_root,y\_root 鼠标点击位置坐标(相对于屏幕左上角),单位是像素。 num char 鼠标键编号,1、2、3 分别表示左、中、右键。 如果按下 ASCII 字符键,此属性即是该字符;如果按下特殊键,此属性为空串。 keycode 所按键的编码。注意,此编码无法区分该键上的不同字符,即它不是键上字符的编码。 keysym 如果按下普通 ASCII 字符键,此属性即是该字符;如果按下特殊键,此属性设置为该 键的名称(是个字符串)。 keysym_num:这是 keysym 的数值表示。对普通单字符键来说,就是 ASCII 码。 width,height 构件改变大小后的新尺寸(宽度和高度),单位是像素。仅适用于&lt;Configure&gt;事件。 widget 生成这个事件的构件实例。