繁体   English   中英

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

[英]tkinter - bind keypress event to label

如果我想将按键事件绑定到Label以更改其文本,则我的第一反应是将Buttonpress绑定到标签,该标签将颜色变为蓝色,并将Keypress绑定到标签。
最基本的情况如下所示:

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()

令我惊讶的是,buttonpress事件运行良好,为标签着色,但是随后的按键却什么也没做。 用bind_all替换event.widget的bind可以bind_all技术上解决此问题,但是显然这是不切实际的。
多谢你们

该标签不接收按键事件,因为它没有键盘焦点(标签在单击时不获得键盘焦点),因此您需要使用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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM