Python tkinter gui listboxen?
Hi.
Ich übe mich gerade ein Bisschen im gui programmieren mit Python. Dazu benutze ich tkinter. Allerdings verzweifle ich gerade an den Listboxen. Ich möchte gerne das ich z.B. 3 verschiedene Sachen zur Auswahl habe. Z.B. 1 2 und 3 (Das schaffe ich noch). Jetzt soll man allerdings zwischen eins von denen 3en wählen können und wenn man das dann mit einem Knopfdruck bestätigt soll etwas bestimmtes geschehen (Für 1 2 oder 3 jeweils unterschiedlich). Also z.B. Ich wähle in der Listbox 2 aus und klicke auf den Knopf OK. Dann soll "Du hast 2 ausgewählt" in der Konsole geprintet werden. Wenn ich allerdings in der Listbox 1 auswähle soll auch dementsprechend "Du hast 1 ausgewählt" in der Konsole geprintet werden. Wie Mache ich das?
Ich hoffe ich hab das einigermaßen überschaubar Formuliert c:
Vielen Dank im Vorraus!
3 Antworten
Lege dir einen Button an und binde diesen an eine Funktion, die künftig auf Klickereignisse reagiert. In dieser schaust du, welche Einträge in deiner Liste ausgewählt wurden.
Der Button:
button = Button(parent_window, text="Click me", command=print_list_selection)
Die Funktion:
def print_list_selection():
for selection in listbox.curselection():
print(listbox.get(selection))
Voraussetzung für mein Beispiel ist, dass die Listbox über eine globale Variable ansprechbar ist.
Hier ein Tip von mir:
Ich empfehle dazu PAGE. Das ist ein in Python mit Tkinter geschriebener Formdesigner um Tkinter GUIs zu erstellen. Dieser ist plattformunabhängig. Den installiert man sich über die Python Paketverwaltung. Dazu in der Eingabeaufforderung/Kommandozeile folgendes eingeben:
- Bei Windows die Eingabeaufforderung als Administrator starten. Dann folgenden Befehl eingeben: pip3 install page
- Unter Linux in der Kommandozeile mit Root-Rechten folgenden Befehl eingeben: pip3 install page
Das startet man dann in der Eingabeaufforderung/Kommandozeile mit dem Befehl page
Das sieht dann in etwa so aus:

Das habe ich selbst geschrieben. Nur die Links habe ich eingefügt.
Okay. Hab Ich soweit verstanden. Allerdings wird hier der Code schon ausgeführt wenn man auf das Element in der Listbox klickt. Ich hätte gerne das man das zuerst mit einem klick auf einen Knopf bestätigen muss. Wie mache ich das?
Kann das sein das du den text kopierst und einfügst?