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.
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.
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.