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

Tkinter中点击Listbox后切换焦点到Entry失效的解决求助

解决Tkinter Listbox点击后焦点无法切换到Entry的问题

问题出在<<ListboxSelect>>事件的触发时机上——当你直接在事件处理函数里调用focus_set()时,Listbox的点击操作还没完成内部处理,它会在你的代码执行后重新夺回焦点。

解决方法很直接:用after()方法延迟一小段时间再设置焦点,给Tkinter足够时间完成Listbox的内部事件流程:

import tkinter as tk

root = tk.Tk()

lb = tk.Listbox(root)
lb.pack()
# 添加测试选项
for item in ["选项1", "选项2", "选项3"]:
    lb.insert(tk.END, item)

entry = tk.Entry(root)
entry.pack()

def sel_done(event):
    # 延迟10毫秒设置焦点,避开Listbox的焦点抢占
    entry.after(10, entry.focus_set)

lb.bind('<<ListboxSelect>>', sel_done)

root.mainloop()

另外注意:原代码里的sel_done函数没有接收事件参数,Tkinter绑定事件时会自动传递事件对象,必须给函数加上event参数,否则会触发参数不匹配的报错。

内容的提问来源于stack exchange,提问作者angico

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 01:07:34