1、鼠标和键盘事件

代码说明
<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 键可换成其它键

2、event 对象常用属性

名称说明
char按键字符,仅对键盘事件有效
keycode按键编码,仅对键盘事件有效
keysym按键名称,仅对键盘事件有效
num鼠标按键,仅对鼠标事件有效
type所触发的事件类型
widget引发事件的组件
width, height组件改变后的大小,仅 Configure 有效
x, y鼠标当前位置,相对于父容器
x_root, y_root鼠标当前位置,相对于整个屏幕

3、源代码

from tkinter import *

window = Tk()
window.geometry("500x200")

w1 = Canvas(window, width=200, height=200, bg="red")
w1.pack()


def MouseTest(event):
    print("鼠标左键点击位置(相对于父容器):{0},{1}".format(event.x, event.y))
    print("鼠标左键点击位置(相对于屏幕):{0},{1}".format(event.x_root, event.y_root))
    print("事件绑定的组件:{0}".format(event.widget))


def TestDrag(event):
    w1.create_oval(event.x, event.y, event.x+1, event.y+1)


def KeyboardTest(event):
    print("键的keycode:{0}, 键的char:{1}, 键的keysym:{2}"
          .format(event.keycode, event.char, event.keysym))


def press_a_test(event):
    print("press a")


def release_a_test(event):
    print("release a")


w1.bind("<Button-1>", MouseTest)
# 将鼠标事件绑定到 MouseTest 方法
w1.bind("<B1-Motion>", TestDrag)

window.bind("<KeyPress>", KeyboardTest)
window.bind(("<KeyPress-a>", press_a_test))
window.bind("<KeyRelease-a>", release_a_test)

window.mainloop()
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐