欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python GUI tkinter库 自学16

程序员文章站 2022-04-27 19:44:41
...

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()