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的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()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4558 次 |
最近记录: |