鼠标事件:
<Button-1>或<ButtonPress-1>或<1> 鼠标左键按下。2表示中键,3 表示右键
<ButtonRelease-1> 鼠标左键释放
<B1-Motion> 按住鼠标左键移动
<Double-Button-1> 双击左键
<Enter> 鼠标指针进入某一组件区域
<Leave> 鼠标指针离开某一组件区域
<MouseWheel> 滚动滚轮
键盘事件:
<KeyPress-a> 按下 a 键,a 可用其他键替代
<KeyRelease-a> 释放 a 键
<KeyPress-A> 按下 A 键(大写的 A)
<Alt-KeyPress-a> 同时按下 alt 和 a;alt 可用 ctrl 和 shift 替代
<Double-KeyPress-a> 快速按两下 a
<Control-V> CTRL 和 V 键被同时按下,V 可以换成其它键位
event 对象常用属性:
char 按键字符,仅对键盘事件有效
keycode 按键编码,仅对键盘事件有效
keysym 按键名称,仅对键盘事件有效
num 鼠标按键,仅对鼠标事件有效
type 所触发的事件类型
widget 引起事件的组件
width,height 组件改变后的大小,仅 Configure 有效
x,y 鼠标当前位置,相对于父容器
x_root,y_root 鼠标当前位置,相对于整个屏幕
#coding=utf-8
from tkinter import *
root=Tk()
root.title("绑定事件处理")
root.geometry("530x300+300+300")
c1=Canvas(root,width=200,height=200,bg="green")
c1.pack()
def mouseTest(event):
print("鼠标左键单击位置相对于父组件:x={0} y={1}".format(event.x,event.y))
print("鼠标左键单击位置相对于整个屏幕:x_root={0} y_root={1}".format(event.x_root,event.y_root))
print("触发的事件类型为:",event.type)
print("触发事件的组件为:",event.widget)
def testDrag(event):
c1.create_oval(event.x,event.y,event.x+1,event.y+1)
def testkeybord(event):
print("按键字符:{0},按键编码:{1},按键名称:{2}"\
.format(event.char,event.keycode,event.keysym))
def press_a_test(event):
print("press b")
def release_a_test(event):
print("release b")
#绑定鼠标左键单击
c1.bind("<Button-1>",mouseTest)
#绑定鼠标左键移动
c1.bind("<B1-Motion>",testDrag)
#绑定键盘任意键
root.bind("<KeyPress>",testkeybord)
#绑定b键:当绑定了具体的按键,会覆盖绑定的任意键效果
root.bind("<KeyPress-b>",press_a_test)
#释放b键
root.bind("<KeyRelease-b>",release_a_test)
root.mainloop()
单击画布的效果.png
鼠标拖动的效果.png
任意键盘效果.png
键盘具体按键.png
网友评论