Я пишу приложение, похожее на Explorer, используя список tkinter. Двойным щелчком я хочу войти в выбранную папку, чтобы очистить список и ввести содержимое папок.
Когда я щелкаю сразу после двойного щелчка, он по-прежнему считается новым двойным щелчком. Таким образом, один щелчок мышью не выполняется, то есть запись в списке не выбрана, и изменение происходит до того, как я снова дважды щелкну.
Есть ли способ «сбросить» двойной щелчок, чтобы моя программа считала следующий щелчок одним кликом, независимо от того, что я делал раньше?
Я пытался использовать координату события щелчка, чтобы получить запись «двойного щелчка», но это будет запускать при третьем щелчке вместо четвертого, что не является желательным поведением. Я также пытался связать тройной щелчок, чтобы заблокировать второй двойной щелчок, но затем программа не ответит, если я нажму более 3 раз, и отреагирует снова только после задержки.
import tkinter as tk
import random
def fill_box(event):
"""Clear and refresh listbox"""
try:
listbox.get(listbox.curselection()[0])
selection = True
except IndexError:
selection = False
print("Event:", event, "Selection:", selection)
listbox.delete(0, tk.END)
for _ in range(10):
listbox.insert(tk.END, random.randint(0, 1000))
root = tk.Tk()
listbox = tk.Listbox(root)
for _ in range(10):
listbox.insert(tk.END, random.randint(0, 1000))
listbox.bind("<Double-Button-1>", fill_box)
# listbox.bind("<Triple-Button-1>", lambda x: 1) # Triple click
listbox.pack()
root.mainloop()
Я ожидаю, что после того, как я дважды щелкну запись, я снова смогу немедленно взаимодействовать с графическим интерфейсом, не дожидаясь, пока пройдет двойной щелчок. Кроме того, я не хочу дважды щелкать новые записи одним щелчком мыши (относительно текущего представления).