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

如何在Tkinter中实现Listbox双击事件触发后禁用,点击按钮再恢复

实现方案

你可以通过新增开关变量控制双击事件的生效状态,修改后的完整代码如下:

from tkinter import *

# 双击功能开关,初始为启用状态
double_click_enabled = True

def go(event):
    global double_click_enabled
    # 开关未启用时直接跳过逻辑
    if not double_click_enabled:
        return
    cs = Lb.curselection()
      
    # 刷新标签显示选中的选项
    w.config(text=Lb.get(cs))
      
    # 设置窗口背景色
    for list in cs:
        if list == 0:
            top.configure(background='red')
        elif list == 1:
            top.configure(background='green')
        elif list == 2:
            top.configure(background='yellow')
        elif list == 3:
            top.configure(background='white')
    # 执行完成后关闭双击开关
    double_click_enabled = False

# 启用双击的按钮回调
def enable_double_click():
    global double_click_enabled
    double_click_enabled = True
   
top = Tk()
top.geometry('250x275')
top.title('Double Click')
   
# 创建列表框
Lb = Listbox(top, height=6)
# 插入列表选项
Lb.insert(0, 'Red')
Lb.insert(1, 'Green')
Lb.insert(2, 'Yellow')
Lb.insert(3, 'White')
   
# 绑定鼠标左键双击事件到go函数
Lb.bind('<Double-1>', go)
Lb.pack()
   
# 创建标签显示选中的选项
w = Label(top, text='Default')
w.pack()

# 创建启用双击功能的按钮
enable_btn = Button(top, text = 'Enable Double Click', command=enable_double_click)
enable_btn.pack(pady = 10)

top.mainloop()

核心修改点

  • 新增全局变量double_click_enabled作为双击功能的状态开关,初始值为True代表可用
  • 双击事件处理函数go开头增加开关校验,开关关闭时直接跳过所有业务逻辑;原有逻辑执行完成后自动将开关设为False,实现单次触发后自动失效的效果
  • 为「Enable Double Click」按钮新增点击回调函数,触发时将双击开关重置为True,恢复双击功能

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:15:01