tkinter - 将keypress事件绑定到标签

时间:2017-02-06 17:57:05

标签: python events tkinter

如果我想将一个按键事件绑定到Label以更改其文本,我的第一反应就是将一个按钮绑定到标签上,该标签将标签颜色为蓝色,并将按键绑定到标签上。
在它最基本的时候,它看起来像这样:

echo "Now destroying attributes of " .get_class($emp2) .$emp2->unsetEmployee();

令我惊讶的是,按钮事件工作正常,为标签着色,但之后的按键没有做任何事情。 用from tkinter import * root = Tk() frame = Frame(root) frame.pack() def prep(event): event.widget.config(bg='light blue') event.widget.bind('<Key>', edit) def edit(event): print(event.char) example = Label(frame, text='Click me') example.pack() example.bind('<Button-1>', prep) mainloop() 替换event.widget bind在技术上可以解决这个问题,但显然这是不切实际的。
谢谢你们

1 个答案:

答案 0 :(得分:5)

标签没有收到按键事件,因为它没有键盘焦点(标签在点击时没有获得键盘焦点)所以你需要用focus_set方法给它焦点:

from tkinter import *
root = Tk()
frame = Frame(root)
frame.pack()

def prep(event):
    event.widget.config(bg='light blue')
    event.widget.focus_set()  # give keyboard focus to the label
    event.widget.bind('<Key>', edit)

def edit(event):
    print(event.char)

example = Label(frame, text='Click me')
example.pack()
example.bind('<Button-1>', prep)
mainloop()