Ich habe ein Listenfeld Ich möchte nur ein Element auswählen, wenn ich darauf doppelklicke, und den Mehrfachauswahlmodus verwenden, wenn Elemente mit einem einzigen Mausklick angezeigt werden. Ist das möglich?tkinter selectmode single und multiple Verhalten für Listbox
Der folgende Code tut nicht ganz das, was ich möchte, da er Einzelklick-Ereignisse aufruft, wenn Doppelklick-Ereignisse aufgerufen werden. Ich würde am liebsten zwischen beiden wählen.
from tkinter import *
class Message:
def __init__(self, root):
self.list_item = StringVar()
self.listBoxObj = Listbox(root, listvariable=self.list_item, selectmode='multiple')
listItems = ['Jane', 'Kate', 'Dani']
self.listBoxObj.pack()
self.listBoxObj.bind('<Double-Button-1>', self.on_double_click)
self.listBoxObj.bind('<ButtonRelease-1>', self.on_single_click)
for item in listItems:
self.listBoxObj.insert(END, item)
def on_double_click(self, event):
widget = event.widget
selection = widget.curselection()
value = widget.get(selection[0])
popup = Tk()
popup.geometry('300x200')
listBox2 = Listbox(popup)
listBox2.insert(END, str(value))
listBox2.pack()
popup.mainloop()
def on_single_click(self,event):
print('do something different here')
if __name__ == '__main__':
root = Tk()
cMessageObj = Message(root)
root.mainloop()
Es sieht so aus, als ob es ziemlich einfach ist, die After-Funktion zu verwenden. Aber ich sehe nicht viele Informationen über die Absage von Ereignissen. Kannst du mich auf etwas hinweisen, das ich lesen kann, um mit der Veranstaltung fertig zu werden? – ProfessionalNameForDisplayHere
@ProfessionalNameForDisplayHere: 'id = some_widget.after (...); ...; some_widget.after_cancel (id) ' –