3

所以伙计们,我是 Python 中的 GUI 新手,我一直在尝试理解事件过程,这是我的代码,以及每当我按下“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()
4

1 回答 1

5

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

问题是,当您像其他小部件一样单击 canvas 元素作为 Entry 时,它不会获得焦点,因此如果您调用 first ,它只会响应 keydown 事件canvas.focus_set()

于 2013-04-22T18:12:38.940 回答