Python tkinter-将按键事件绑定到标签

Python tkinter-将按键事件绑定到标签,python,events,tkinter,Python,Events,Tkinter,如果我想将按键事件绑定到标签上以更改其文本,我的第一反应是将按键绑定到标签上,将标签涂成蓝色,然后将按键绑定到标签上。 最基本的情况是,它看起来是这样的: from tkinter import * root = Tk() frame = Frame(root) frame.pack() def prep(event): event.widget.config(bg='light blue') event.widget.bind('<Key>', edit) de

如果我想将按键事件绑定到标签上以更改其文本,我的第一反应是将按键绑定到标签上,将标签涂成蓝色,然后将按键绑定到标签上。
最基本的情况是,它看起来是这样的:

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()
从tkinter导入*
root=Tk()
帧=帧(根)
frame.pack()
def准备(事件):
event.widget.config(bg='浅蓝色')
event.widget.bind(“”,编辑)
def编辑(事件):
打印(event.char)
示例=标签(框架,文本=“单击我”)
pack()示例
示例。绑定(“”,准备)
mainloop()
令我惊讶的是,按键活动效果很好,给标签涂上了颜色,但之后按键什么也没做。 将event.widget的
bind
替换为
bind\u all
从技术上解决了这个问题,但显然这是不切实际的。

感谢各位

标签没有收到按键事件,因为它没有键盘焦点(标签在单击时不会获得键盘焦点),因此您需要使用
focus\u 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()
从tkinter导入*
root=Tk()
帧=帧(根)
frame.pack()
def准备(事件):
event.widget.config(bg='浅蓝色')
event.widget.focus_set()#将键盘焦点赋予标签
event.widget.bind(“”,编辑)
def编辑(事件):
打印(event.char)
示例=标签(框架,文本=“单击我”)
pack()示例
示例。绑定(“”,准备)
mainloop()

这是一个有用的了解方法。出于某种原因,我努力在网上找到它。非常感谢。