Python Tkinter Canvas无法绑定键盘

Rob*_*ean 9 python tkinter

我一直在运行这样的小脚本

from Tkinter import *
root = Tk()
def callback(event):
    print "callback"
w = Canvas(root, width=300, height=300)
w.bind("<Key>", callback)
w.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

但是,在我的情况下不处理键盘事件(我在窗口7上使用python 2.7)

如果我使用

w.bind("<Button-1>", callback)
Run Code Online (Sandbox Code Playgroud)

事情很好.

所以,这真让我困惑.请有人告诉我为什么会这样,提前谢谢.

Bry*_*ley 12

仅当具有键盘焦点的窗口小部件获得键事件时,才会触发键绑定.默认情况下,画布不会获得键盘焦点.您可以将重点放在focus_set方法上.通常,您可以在鼠标按钮上进行绑定.

将以下绑定添加到您的代码中,然后在画布中单击,您的键绑定将开始工作:

w.bind("<1>", lambda event: w.focus_set())
Run Code Online (Sandbox Code Playgroud)

  • 谢谢布莱恩,这是焦点问题.虽然代码有点不同.我通过内联`w.focus_set()w.bind('<Key>',function)使它工作 (2认同)
  • @RobertBean:只是为了说清楚 - 您不必在绑定之前执行 focus_set 。focus_set 只需在人们开始使用键盘之前完成。 (2认同)