在 tkinter 中禁用鼠标双击事件

Posted

技术标签:

【中文标题】在 tkinter 中禁用鼠标双击事件【英文标题】:Disable mouse double click event in tkinter 【发布时间】:2022-01-12 00:45:43 【问题描述】:

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

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()

【问题讨论】:

【参考方案1】:

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

首先定义一个标志,然后是一个可以设置标志的函数:

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 函数顶部的标志。如果双击被禁用,则返回字符串“break”,它会阻止函数的结果执行并禁用任何默认行为。

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

【讨论】:

它成功了兄弟,我很感激

以上是关于在 tkinter 中禁用鼠标双击事件的主要内容,如果未能解决你的问题,请参考以下文章

Openlayers 禁用鼠标双击缩放事件(ol.interaction.DoubleClickZoom)

MFC中如何在指定的区域响应鼠标单击事件

Python中tkinter控件中的Listbox控件详解

在 python tkinter 中每次连续单击后都会触发双击事件

在 Python 中获取 Tkinter 窗口之外的鼠标事件

如何完全禁用任何鼠标单击