Python事件与tkinter绑定

时间:2013-04-22 18:03:05

标签: 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, height=100, bg='blue')
canvas.bind("a", callback)
canvas.pack()

root.mainloop()

1 个答案:

答案 0 :(得分:5)

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

问题是当你点击它时,canvas元素没有像其他小部件一样点击它作为Entry,所以如果你先调用canvas.focus_set(),它只会响应keydown事件。