Tkinter 鼠标键盘事件(一)
一: 鼠标事件
<Button-1> 鼠标左键单击
<Button-2> 鼠标中键单击
<Button-3> 鼠标右键单击
<1> = <Button-1> =<ButtonPress-1>
<2> = <Button-2> = <ButtonPress-2>
<3> = <Button-3> =<ButtonPress-3>
<B1-Motion> 鼠标左键拖动
<B2-Motion> 鼠标中键拖动
<B3-Motion> 鼠标右键拖动
<ButtonRelease-1> 鼠标左键释放
<ButtonRelease-2> 鼠标中键释放
<ButtonRelease-3> 鼠标右键释放
<Double-Button-1> 鼠标左键双击
<Double-Button-2> 鼠标中键双击
<Double-Button-3> 鼠标右键双击
<Enter> 鼠标指针进入控件
<Leave> 鼠标指针离开控件
二:键盘事件
<Return> 回车
<Cancel> Break键
<BackSpace> BackSpace键
<Tab> Tab键
<Shift_L> Shift键
<Alt_L> Alt键
<Control_L> Control键
<Pause> Pause键
<Caps_Lock> Caps_Lock键
<Escape> Escapel键
<Prior> PageUp键
<Next> PageDown键
<End> End键
<Home> Home键
<Left> 左箭头
<Up> 上箭头
<Right> 右箭头
<Down> 下箭头
<Print> Print Screen键
<Insert> Insert键
<Delete> Delete键
<F1> F1键
. .
. .
<F12> F12键
<Num_Lock> Num_Lock键
<Scroll_Lock> Scroll_Lock键
<key> 任意键
三: 可打印的字符:
a 字母a
b 字母b
1 数字1
<KeyPress-a>
<KeyRelease-a>
A shift+a
B shift+b
四: 组合键:
<Shift-Up> Shift+Up
<Alt-Up> Alt+Up
<Control-Up> Ctrl+Up
<Control-A> Ctrl+shift+a
五:窗体事件:
<Configure> 改变大小或位置
<Visibility> 当组件变为可视状态时触发
<Unmap> 当组件由显示状态变为隐藏状态时触发
<Map> 当组件由隐藏状态变为显示状态时触发
<Expose> 当组件从原本被其他组件遮盖的状态中暴漏出来时触发
<FocusIn> 组件获得焦点时触发
<FocusOut> 组件失去焦点时触发
<Circulate> 当窗体由于系统协议要求在堆栈中置顶或压底时触发
<Colormap> 当窗体的颜色或外貌改变时触发,Tk中忽略此细则
<Property> 当窗体的属性被删除或改变时触发,属于TK的核心
<Destroy> 当组件被销毁时触发
<Activate> 与组件选项中的state项有关,表示组件由不可用变为可用时触发
<Deactiavte> 与组件选项中的state项有关,表示组件由可用变为不可用时候触发
六: Event
widget 事件被触发的控件
x, y 鼠标距离窗体左上角的位置(坐标)
x_root, x_y 鼠标距离屏幕左上角的位置(坐标)
char 键盘事件对应的字符代码
keysym 键盘事件对应的字符串
keycode 键盘事件对应的按键码
num 鼠标事件对应的按键码
width, height 控件的新大小
type 事件类型
列子
# encoding: utf-8 from Tkinter import * class MouseKeyEventDemo: def __init__(self): # 窗口和标题 window = Tk() window.title("鼠标键盘事件") # 打包一个白色画布到窗口 canvas = Canvas(window, width=200, height=200, bg="white") canvas.focus_set() # 让画布获得焦点,对于键盘 canvas.pack() # 绑定鼠标左键事件,交由processMouseEvent函数去处理,事件对象会作为参数传递给该函数 canvas.bind(sequence="<Button-1>", func=self.processMouseEvent) # 绑定鼠标键盘事件,交由processKeyboardEvent函数去处理,事件对象会作为参数传递给该函数 canvas.bind(sequence="<Key>", func=self.processKeyboardEvent) # 消息循环 window.mainloop() # 处理鼠标事件,me为控件传递过来的鼠标事件对象 def processMouseEvent(self, me): print("me=", type(me)) # me= <class> print("位于屏幕", me.x_root, me.y_root) print("位于窗口", me.x, me.y) print("位于窗口", me.num) # 处理鼠标事件,ke为控件传递过来的键盘事件对象 def processKeyboardEvent(self, ke): print("ke.keysym", ke.keysym) # 按键别名 print("ke.char", ke.char) # 按键对应的字符 print("ke.keycode", ke.keycode) # 按键的唯一代码,用于判断按下的是哪个键</class></key></button-1> MouseKeyEventDemo()
以上代码已在python2.7上运行成功