发布时间:2018-06-09 12:43:27编辑:Run阅读(4952)
测试离开(Leave)事件
测试鼠标释放事件
代码:
import tkinter as tk root = tk.Tk() def printcoords(event): print(event.x, event.y) # 创建第一个 Button,并将它与 Enter 事件绑定 bt1 = tk.Button(root, text='leftmost button') bt1.bind('<Leave>',printcoords) bt1.grid() root.mainloop()
结果:
分别测试 Leave 事件,只是在离开组件是会产生此事件
响应特殊键(Special Key)
代码;
import tkinter as tk root = tk.Tk() def printcoords(event): print('event.char = ', event.char) print('event.keycode = ', event.keycode) # 创建第一个 Button,并将它与 BackSpace 键绑定 bt1 = tk.Button(root,text='Press BackSpace') bt1.bind('<BackSpace>', printcoords) # 创建二个 Button,并将它与回车键绑定 bt2 = tk.Button(root, text='Press Enter') bt2.bind('<Return>', printcoords) # 创建第三个 Button,并将它与 F5键绑定 bt3 = tk.Button(root, text='F5') bt3.bind('<F5>', printcoords) # 创建第4个 Button,并将它与左 Shift 键绑定,与参考上说法一致 bt4 = tk.Button(root, text='Left Shift') bt4.bind('<Shift_L>', printcoords) # 创建第5个 Button,并将它与右 Shift 键绑定,与参考上说法一致 bt5 = tk.Button(root,text='Right Shift') bt5.bind('<Shift_R>',printcoords) # 将焦点设置到第1个 Button 上 bt1.focus_set() bt1.grid() bt2.grid() bt3.grid() bt4.grid() bt5.grid() root.mainloop()
结果:
各个组件间焦点的切换可以使用 TAB 键
特 殊 键Cancel/Break/BackSpace/Tab/Return/Sift_L/Shift_R/Control_L/Control_R/Alt_L/Alt_R/Pause
# Caps_Loack/Escape/Prior(Page Up)/Next(PageDown)/End/Home/Left/Up/Right/Down/Print/Insert/Delete/F1-12/Num_Lock/Scroll_Lock这些键的 char 是不可打印的,可以使用 event.keycode 查看
响应所有的按键(Key)事件
使用 Key 处理所有的键盘事件
代码:
import tkinter as tk root = tk.Tk() def printcoords(event): print('event.keycode = ', event.keycode) # 创建第一个 Button,并将它与 Key 键绑定 bt1 = tk.Button(root,text='Press BackSpace') bt1.bind('<Key>', printcoords) # 将焦点设置到第1个 Button 上 bt1.focus_set() bt1.grid() root.mainloop()
结果:
处理所有的按键事件,如果是上例的特殊键,event.char 返回为空;其它情况下为这个键的值
如果输入大写字母(即上档键值),按下 Shift 键时就会有 Key 的事件触发。即回将用两次:一次为 Shift 本身,另一次为 Shift+ Kye 的实际键值
只处理指定的按键消息
代码:
import tkinter as tk root = tk.Tk() def printCoords(event): print('event.char = ',event.char) print('event.keycode = ',event.keycode) # 创建第一个 Button,并将它与键'a'绑定 bt1 = tk.Button(root,text = 'Press BackSpace') bt1.bind('a',printCoords) # 创建二个 Button,并将它与按下 spacebar 是触发事件 bt2 = tk.Button(root,text = 'Press spacebar') bt2.bind('<space>',printCoords) # 创建第三个 Button,并将它与'<'键绑定 bt3 = tk.Button(root,text = 'less than key') bt3.bind('<less>',printCoords) # 将焦点设置到第1个 Button 上 bt1.focus_set() bt1.grid() bt2.grid() bt3.grid() root.mainloop()
结果:
一般的按键直接使用就可以了,这样书写'key',不是'<key>'
但有两个需要特别注意:空格与小于的处理,使用方式为'<space>和<less>
上一篇: tkinter -- Event(1)
下一篇: tkinter -- Event(3)
47604
45984
36909
34467
29079
25713
24565
19714
19245
17756
5564°
6155°
5690°
5737°
6704°
5483°
5484°
5988°
5965°
7295°