Tkinter:函数设置焦点异常,entry_1未获焦反而entry_2获焦?
问题原因
当按下Tab键时,你的_test_entry函数确实执行了entry_1.focus_set()将焦点设回entry_1,但Tkinter的事件机制中,绑定的自定义处理函数执行后,还会继续触发该事件的默认系统行为——Tab键的原生功能就是在组件间循环切换焦点,所以紧接着焦点就被默认行为切换到了下一个组件entry_2。
修复方案
要阻止事件的默认行为,只需要在满足条件时让绑定函数返回"break",这样就能终止事件的后续传播,只保留你自定义的焦点设置逻辑。
修改后的代码如下:
import tkinter as tk def _test_entry(event): if value_1.get() == 'a': entry_1.focus_set() return "break" # 阻止默认的Tab切换行为 win = tk.Tk() win.geometry("200x100") value_1 = tk.StringVar(value='') entry_1 = tk.Entry(win, textvariable=value_1) entry_1.bind("<Tab>", _test_entry) entry_1.pack() entry_2 = tk.Entry(win) entry_2.pack() entry_1.focus_set() win.mainloop()
内容的提问来源于stack exchange,提问作者Psionman
相关产品推荐
相关产品推荐

