Python Tutorial
- jetzt Python programmieren lernen

Radiobutton in Tkinter

Der Name Radiobutton hat seinen technischen Ursprung von Omas Radio aus der Küche. Dieses hatte Knöpfe, die man mit einzelnen Radiosendern belegen konnte. Drücke man einen, sprang der bisher gedrückte in seine Ausgangsstellung. Man. konnte also immer nur einen Sender gleichzeitig wählen (was auch irgendwie sinnvoll ist).

Das gleiche gilt für unsere Radiobutton in einer GUI. Hier haben wir die tpyschen Elemente, um Eingaben abzufragen wie beispielsweise Mann oder Frau etc.

Radiobuttons machen also erst Sinn, wenn man mehr als eine Auswahl hat (sonst wäre die Checkbutton die erste Wahl).

Wir haben bei Radiobuttons eine Beschriftung und einen Rückgabewert jeder Auswahl. Hierbei kann aber Beschriftung und Rückgabewert gleich sein, muss aber nicht. Sprich wir haben einen Button mit der Beschriftung „Herr“ und als Rückgabewert wird „m“ geliefert bzw. („Frau“ mit Rückgabewert „w“). Im ersten Beispiel zum Verständnis des Widgets ist Beschriftung und Rückgabewert identisch.

Wir erstellen dazu eine Liste in Python:

anrede = ["Frau", "Herr"]

Im nächsten Schritt müssen wir festlegen, welche Art unsere Rückgabevariable hat (String, Int, …) und wie diese benannt ist:

anrede = ["Frau", "Herr"]

ausgewaehlt = tk.StringVar()

Und nun können wir unsere Liste durchlaufen und die Radiobuttons ausgeben lassen:

for einzelwert in anrede:
    radiob = tk.Radiobutton(root, text=einzelwert, value=einzelwert, variable=ausgewaehlt)
    radiob.pack()

Das führt zu folgender Ausgabe:

[bild[Radiobutton ohne Vorgabewert]]

Wir erhalten die Lustige Ausgabe mit durchstrichenen Buttons, weil wir keinen Wert vorab gesetzt haben! Wir können auch einen Wert vorab als erste angewählten Wert setzen:

ausgewaehlt = tk.StringVar()
ausgewaehlt.set("Frau")

Den gewählten Wert können wir abfragen über:

    print(ausgewaehlt.get())
    aktuell_ausgewaehlt = ausgewaehlt.get()

Jetzt wollen wir direkt bei Änderung des Wertes eine Aktion anstoßen. Also wird das typische command aufgenommen:

Hier der komplette Code:

def ausgabe():
    print(ausgewaehlt.get())
    aktuell_ausgewaehlt = ausgewaehlt.get()
    textausgabe = tk.Label(root, text=aktuell_ausgewaehlt, bg="orange")
    textausgabe.pack()

anrede = ["Frau", "Herr"]

ausgewaehlt = tk.StringVar()
ausgewaehlt.set("Frau")

for einzelwert in anrede:
    radiob = tk.Radiobutton(root, text=einzelwert, value=einzelwert, variable=ausgewaehlt, command=ausgabe)
    radiob.pack()

Würde man den Rückgabewert anders als den Anzeigewert setzen wollen, würde anstelle der Liste ein Dictionary nutzen.

Folgende Attribute stehen zur Verfügung:

activebackground, activeforeground, anchor, background, bd, bg, bor- derwidth, command, fg, foreground, height, justify, overrelief, padx, pady, relief, state, takefocus, text, textvariable, width

indicatoron und variable

Weiterempfehlen • Social Bookmarks • Vielen Dank

Bitte unterstützen Sie dieses Projekt

Sie können dieses Projekt in verschiedenen Formen unterstützen - wir würden uns freuen und es würde uns für weitere Inhalte motivieren :).

Empfehlen Sie es weiter - wir freuen uns immer über Links und Facebook-Empfehlungen.

Das neue E-Book zum Kurs gibt es zum Kaufen.

Sie können uns auch eine Spende über PayPal zukommen lassen.

Bestellen Sie Bücher über folgenden Link bei Amazon:
Bücher über Python

Vielen Dank für Ihre Unterstützung