You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 07:27:07