如果我想将一个按键事件绑定到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
在技术上可以解决这个问题,但显然这是不切实际的。
谢谢你们
答案 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()