tkinter - 将keypress事件绑定到标签

Eri*_*Red 2 python events tkinter

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

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()
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,按钮事件工作正常,为标签着色,但之后的按键没有做任何事情.更换event.widget的bindbind_all在技术上解决这个问题,但显然这是不切实际的.
多谢你们

j_4*_*321 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()
Run Code Online (Sandbox Code Playgroud)