Listbox – Viel Inhalt zur Auswahl (auch Mehrfachauswahl)
Über das Element Listbox können Inhalte als Liste aufgeführt werden, in der ein oder mehrere Einträge ausgewählt werden können.
Im folgenden Beispiel eine Einkaufsliste. Der Inhalt wird als Liste in Python erstellt und dann über eine for-Schleife jeder einzelner Listenpunkt eingefügt.
Der dazugehörte Python-Code:
import tkinter as tk
fenster = tk.Tk()
einkaufsliste = ["Mehl", "Butter", "Hefe", "Wasser", "O-Saft", "Haferflocken"]
lbox = tk.Listbox(fenster)
lbox.pack()
for lebensmittel in einkaufsliste:
lbox.insert("end", lebensmittel)
schaltf1 = tk.Button(fenster, text="Aktion durchführen", command= ausgabe)
schaltf1.pack()
fenster.mainloop()
Standardmäßig kann nur 1 Auswahl gemacht werden, bis etwas anderes eingestellt wird. Wir erhalten über curselection()
den Index des gewählten Listenpunktes:
import tkinter as tk
fenster = tk.Tk()
def ausgabe():
print(lbox.curselection())
aktuell_ausgewaehlt = lbox.curselection()
textausgabe = tk.Label(fenster, text=aktuell_ausgewaehlt, bg="orange")
textausgabe.pack()
einkaufsliste = ["Mehl", "Butter", "Hefe", "Wasser", "O-Saft", "Haferflocken"]
lbox = tk.Listbox(fenster)
lbox.pack()
for lebensmittel in einkaufsliste:
lbox.insert("end", lebensmittel)
schaltf1 = tk.Button(fenster, text="Aktion durchführen", command= ausgabe)
schaltf1.pack()
fenster.mainloop()
Wollen wir es ermöglichen, dass mehrere Einträge ausgewählt werden können, geschieht dies über lbox["selectmode"] = "extended"
Jetzt erhalten wir als Rückgabewert, wenn das zweite, dritte und fünfte Element gewählt wurde dann (1, 2, 4)
(zur Erinnerung: Computer fangen bei 0 an zu zählen).
Bei selectmode
stehen uns folgende Möglichkeiten zur Verfügung:
selectmode:
single/browse es kann nur 1 Eintrag ausgewählt werden
multiple oder extended mehrere Einträge auswählbar