Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

Auswahl mit Radiobutton

Verwendung von Radiobutton

Radiobutton werden verwendet, wenn der Benutzer genau ein Element aus einer vorgegebenen Menge von Elementen auswählen soll.

Beispiel 1: Auswahl der Tageszeit

Hier kann der Benutzer die Tageszeit auswählen.

Anwendungsfenster

Mit dem folgenden Programm lässt sich diese grafische Benutzeroberfläche implementieren.

from tkinter import *
# Erzeugung des Fensters
tkFenster = Tk()
tkFenster.title('Test')
tkFenster.geometry('120x125')
# Rahmen Radiobutton
frameRadiobutton = Frame(master=tkFenster, bg='#FFCFC9')
frameRadiobutton.place(x=5, y=5, width=110, height=80)
# Rahmen Ausgabe
frameAusgabe = Frame(master=tkFenster, bg='#D5E88F')
frameAusgabe.place(x=5, y=90, width=110, height=30)
# Kontrollvariable
tageszeit = StringVar()
# Radiobutton
radiobutton1 = Radiobutton(master=frameRadiobutton, anchor='w',
                           text='morgens', value='Guten Morgen!', variable=tageszeit)
radiobutton1.place(x=5, y=5, width=100, height=20)
radiobutton2 = Radiobutton(master=frameRadiobutton, anchor='w',
                           text='mittags', value='Guten Tag!', variable=tageszeit)
radiobutton2.place(x=5, y=30, width=100, height=20)
radiobutton3 = Radiobutton(master=frameRadiobutton, anchor='w',
                           text='abends', value='Guten Abend!', variable=tageszeit)
radiobutton3.place(x=5, y=55, width=100, height=20)
radiobutton1.select()
# Label Text
labelText = Label(master=frameAusgabe, bg='white', textvariable=tageszeit)
labelText.place(x=5, y=5, width=100, height=20)
# Aktivierung des Fensters
tkFenster.mainloop()

Eine Radiobutton-Komponente wird mit Hilfe eines Radiobutton-Objekts verwaltet. Ein solches Objekt verwaltet mit Hilfe des Attributs value einen Wert (der im vorliegenden Programm vom Typ str ist).

Bei mehreren Radiobutton-Objekten benötigt man eine Kontrollvariable zur Verwaltung des ausgewählten Werts. Im vorliegenden Programm wird das vom StringVar-Objekt tageszeit übernommen. Dieses Kontrollobjekt muss erzeugt werden (im Programm oben durch tageszeit = StringVar()) und mit den einzelnen Radiobutton-Objekten verknüpft werden. Letzteres erfolgt mit dem Attribut variable des Radiobutton-Objekts. Zugriff auf den ausgewählten Wert des Kontrollobjekts hat man mit den Methoden get und set.

Aufgabe 1

Teste das vorgegebene Programm.

Beispiel 2: Auswahl einer Größe

In diesem Beispiel werden die Werte der Radiobutton mit einer Kontrollvariable vom Typ DoubleVar verwaltet.

Die Radiobutton-Objekte sind hier zudem mit einer Ereignisbehandlungsprozedur verbunden.

Anwendungsfenster

Mit dem folgenden Programm lässt sich diese grafische Benutzeroberfläche implementieren.

from tkinter import *
# Ereignisverarbeitung
def auswahlClick():
    anzeige = str(wert.get()) + ' Liter'
    labelText.config(text=anzeige)
# Erzeugung des Fensters
tkFenster = Tk()
tkFenster.title('Test')
tkFenster.geometry('120x125')
# Rahmen Radiobutton
frameRadiobutton = Frame(master=tkFenster, bg='#FFCFC9')
frameRadiobutton.place(x=5, y=5, width=110, height=80)
# Rahmen Ausgabe
frameAusgabe = Frame(master=tkFenster, bg='#D5E88F')
frameAusgabe.place(x=5, y=90, width=110, height=30)
# Kontrollvariable
wert = DoubleVar()
# Radiobutton
radiobutton1 = Radiobutton(master=frameRadiobutton, anchor='w',
                           text='klein', value=0.2, variable=wert,
                           command=auswahlClick)
radiobutton1.place(x=5, y=5, width=100, height=20)
radiobutton2 = Radiobutton(master=frameRadiobutton, anchor='w',
                           text='mittel', value=0.3, variable=wert,
                           command=auswahlClick)
radiobutton2.place(x=5, y=30, width=100, height=20)
radiobutton3 = Radiobutton(master=frameRadiobutton, anchor='w',
                           text='gross', value=0.5, variable=wert,
                           command=auswahlClick)
radiobutton3.place(x=5, y=55, width=100, height=20)
radiobutton1.select()
# Label Text
labelText = Label(master=frameAusgabe, bg='white', text=str(wert.get()) + ' Liter')
labelText.place(x=5, y=5, width=100, height=20)
# Aktivierung des Fensters
tkFenster.mainloop()

Aufgabe 2

Führe selbst Experimente mit Radiobutton durch.

X

Fehler melden

X

Suche