在 tkinter 中禁用鼠标双击事件

Disable mouse double click event in tkinter

我正在考虑在一个事件后禁用鼠标双击事件。如果我双击列表框中的一个项目,该事件将禁用,直到我按下启用双击按钮。如何存档?

from tkinter import *
   
def go(event):
    cs = Lb.curselection()
      
    # Updating label text to selected option
    w.config(text=Lb.get(cs))
      
    # Setting Background Colour
    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')
   
   
top = Tk()
top.geometry('250x275')
top.title('Double Click')
   
# Creating Listbox
Lb = Listbox(top, height=6)
# Inserting items in Listbox
Lb.insert(0, 'Red')
Lb.insert(1, 'Green')
Lb.insert(2, 'Yellow')
Lb.insert(3, 'White')
   
# Binding double click with left mouse
# button with go function
Lb.bind('<Double-1>', go)
Lb.pack()
   
# Creating Edit box to show selected option
w = Label(top, text='Default')
w.pack()

# Creating Enable button to enable double clicking
enable_btn = Button(top, text = 'Enable Double Click')
enable_btn.pack(pady = 10)

top.mainloop()

要禁用双击,请绑定到该事件,然后让您的函数 return 字符串 "break"。您可以使用变量来触发该行为。

先定义一个flag,再定义一个可以设置flag的函数:

double_click_enabled = False
def enable_double_clicking(enable):
    global double_click_enabled
    double_click_enabled = enabled

接下来,定义您的按钮以调用此函数。在此示例中,我将显示两个用于启用和禁用的按钮:

enable_btn = Button(top, text = 'Enable Double Click', command=lambda: enable_double_clicking(True))
disable_btn = Button(top, text = 'Disable Double Click', command=lambda: enable_double_clicking(False))

最后,检查 go 函数顶部的标志。如果双击被禁用,return 字符串“break”会阻止函数的结果执行并禁用任何默认行为。

def go(event):
    if not double_click_enabled:
        return "break"
    ...