Python GUI tkinter库 自学16
事件机制和消息循环原理1、鼠标和键盘事件2、event 对象常用属性3、源代码1、鼠标和键盘事件代码说明<Button-1> <ButtonPress-1> <1>鼠标左键按下,2 表示中间的滚轮,3 表示右键<ButtonRelease-1>鼠标左键释放<B1-Motion>按住鼠标左键移动<Double-Button-1>
·
事件机制和消息循环原理
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()
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献2条内容
所有评论(0)