在 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)
在 python tkinter 中每次连续单击后都会触发双击事件