鼠标键盘事件
01鼠标事件
在python当中,tkinter模块的事件event都用字符串描述,格式为:
组件对象.bind(event,handler)
其中event为事件,handler为处理事件的函数,鼠标按钮的点击事件格式如下表:
例:编写捕获鼠标点击事件的程序。当鼠标在窗体容器中点击时,记录下其坐标位置。
from tkinter import *
def callback(event):
print( "clicked at:", event.x, event.y)
s = (event.x, event.y)
txt.set(s)
win = Tk()
win.geometry('200x120')
win.title('鼠标事件')
frame = Frame(win, width=200, height=100, bg = 'cyan')
frame.bind("<Button-1>", callback)#event为点击鼠标左键,callback调用函数处理事件
frame.pack()
txt = StringVar()
L = Label(win, width=20, textvariable = txt)
L.pack()
win.mainloop()
运行结果:
02键盘事件
Q.键盘事件与鼠标事件的不同之处以及如何处理?
A.鼠标可以显式地看出点击位置,而键盘无法知道作用于哪个组件。因此在捕获键盘事件时,先要用focus_set()方法把键盘的焦点设置到一个组件上,这样才能捕获到键盘事件。
键盘事件及说明:
例:通过捕获键盘事件,在窗体中显示按下的键。
from tkinter import *
win = Tk()
win.title('键盘事件')
def key_action(event):
print("pressed",repr(event.char))#repr返回一个对象的 string 格式。
s = event.char
txt.set(s)
def callback(event):
L.focus_set()#把键盘焦点设置到文本标签上
txt = StringVar()
L = Label(win,width=20,textvariable=txt,font='song -36 bold',bg='cyan')
L.bind("<KeyPress>",key_action)
L.bind("<Button-1>",callback)
L.pack()
win.mainloop()