Tkinter 键盘与鼠标事件绑定的陷阱
Frame本身是一个Widget控件,在使用框架时需特别小心获得焦点的概念,当事件绑定与Frame有关时,必须在Frame获得焦点时,键盘绑定才可生效。
示例1
键盘与鼠标绑定Frame对象的应用。
from tkinter import *
def key(event): # 处理键盘按a-z键事件
print("Press " + repr(event.char) + " key")
def coordXY(event):
frame.focus_set()
print("Mouse position:",event.x,event.y)
root = Tk()
root.title("apidemos.com") # 窗口标题
frame = Frame(root,width=100,height=100)
frame.bind("<Key>",key)
frame.bind("<Button-1>",coordXY)
frame.pack()
root.mainloop()
输出:
这个程序在执行时必须将鼠标光标放在窗口内,同时先有鼠标单击,这时第6行同时使用frame.focus_set( )让Widget控件frame获得焦点,然后按键才可以动作。
下面是示范输出界面。
至于在一开始时即可执行,原因是此程序是在root窗口执行绑定,在程序被启动时此窗口已经获得焦点。