Auswahlmöglichkeit mit Radiobutton

Eingeschränkte Eingabemöglichkeiten

Bisher wurde die Spielzahl vom Benutzer in ein Eingabefeld eingegeben. Es besteht dabei die Gefahr, dass der Benutzer Eingaben macht, die im Spielkontext unsinnig sind und nicht vom Programm verarbeitet werden können. Um solche unsinnigen Eingaben von Beginn an auszuschließen, soll dem Benutzer nur eine Auswahl aus den möglichen Spielzahlen angeboten werden.

Anwendungsfenster

Radiobutton als GUI-Objekte

Das folgende Testprogramm zeigt, wie man Optionsfelder bzw. Radiobutton erzeugen und zur gezielten Auswahl nutzen kann.

from tkinter import *
# Ereignisverarbeitung

def Radiobutton_Click():
    # Verwaltung der Daten
    zahl = spielzahl.get()
    # Anzeige der Daten
    labelAusgewaehlteZahl.config(text=str(zahl))

# Erzeugung des Fensters
tkFenster = Tk()
tkFenster.title("Test")
tkFenster.geometry("120x110")
# Rahmen Zahl
frameZahl = Frame(master=tkFenster,
                  background="#D5E88F")
frameZahl.place(x=5, y=5, width=110, height=100)
# Label mit Überschrift für die Zahl
labelUeberschriftZahl = Label(master=frameZahl,
                              text="Zahl",
                              background="white")
labelUeberschriftZahl.place(x=5, y=5, width=100, height=20)
# Radiobutton für die Zahl
spielzahl = IntVar()
radiobutton1 = Radiobutton(master=frameZahl,
                           text='1',
                           value=1,
                           variable=spielzahl,
                           command=Radiobutton_Click)
radiobutton1.place(x=5, y=30, width=30, height=18)
radiobutton2 = Radiobutton(master=frameZahl,
                           text='2',
                           value=2,
                           variable=spielzahl,
                           command=Radiobutton_Click)
radiobutton2.place(x=40, y=30, width=30, height=18)
radiobutton3 = Radiobutton(master=frameZahl,
                           text='3',
                           value=3,
                           variable=spielzahl,
                           command=Radiobutton_Click)
radiobutton3.place(x=75, y=30, width=30, height=18)

# Label mit ausgewählter Zahl
labelAusgewaehlteZahl = Label(master=frameZahl,
                              text="",
                              background="white")
labelAusgewaehlteZahl.place(x=40, y=52, width=30, height=18)

# Aktivierung des Fensters
tkFenster.mainloop()

Im Testprogramm werden drei Radiobutton vorgegeben, von denen immer nur einer ausgewählt werden kann. Durch Anklicken eines Radiobuttons wird eine Zahl ausgewählt und im Textfeld angezeigt.

Test

Radiobutton dienen dazu, dem Benutzer die Möglichkeit zu geben, einen Wert aus einer Auflistung von Werten auszuwählen.

Eine Radiobutton-Komponente wird mit Hilfe eines Radiobutton-Objekts verwaltet. Ein solches Objekt verwaltet mit Hilfe des Attributs value einen Wert (der u. a. vom Typ int oder vom Typ string sein kann). Bei mehreren Radiobutton-Objekten benötigt man eine sogenannte Kontrollvariable zur Verwaltung des ausgewählten Werts. Solch eine Kontrollvariable ist ein Objekt der Klasse IntVar bzw. StringVar (je nachdem, ob ein Wert vom vom Typ int oder string ausgewählt werden soll). Dieses Kontrollobjekt muss erzeugt werden (im Programm oben durch spielzahl = IntVar()) und mit den einzelnen Radiobutton verknüpft werden. Letzteres erfolgt mit dem Attribut variable des Radiobutton-Objekts. Zugriff auf den ausgewählten Wert des Kontrollobjekts hat man mit den Operationen get und set.

Aufgabe 1

Ergänze das chuck-a-luck-Programm so, dass der Benutzer nur sinnvolle Spielzahlen auswählen kann.

Anwendungsfenster
X

Fehler melden

X

Suche