Events 使用tkinter的Python事件绑定

Events 使用tkinter的Python事件绑定,events,binding,python-3.x,tkinter,key,Events,Binding,Python 3.x,Tkinter,Key,伙计们,我对Python中的GUI是新手,我一直在尝试理解envents过程,这里是我的代码,我的意图是每当我按下“a”键时,它都会打印“按键按下”。但这对我来说不起作用 #!/usr/bin/env python3 # -*-coding:UTF-8 -* from tkinter import * root = Tk() def callback(event): print("key pressed") canvas = Canvas(root, width=100, hei

伙计们,我对Python中的GUI是新手,我一直在尝试理解envents过程,这里是我的代码,我的意图是每当我按下“a”键时,它都会打印“按键按下”。但这对我来说不起作用

#!/usr/bin/env python3
# -*-coding:UTF-8 -*

from tkinter import *

root = Tk()

def callback(event):
    print("key pressed")

canvas = Canvas(root, width=100, height=100, bg='blue')
canvas.bind("a", callback)
canvas.pack()

root.mainloop()

它不执行回调函数,因为程序的焦点在
Tk
元素上。如果将该行替换为
root.bind(“a”,callback)
,它将按预期工作


问题在于,当您单击画布元素时,它不会像其他小部件一样接收焦点作为条目,因此只有在您调用第一个
canvas.focus\u set()时,它才会响应keydown事件

请注意,您还可以绑定
以执行
焦点设置
,这将允许您在画布中单击,然后键入字符。