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

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

# -*- coding: iso-8859-1 -*-
from wx import *
# Ereignisverarbeitung

def Button_Auswahl_Click(event):
    # Verwaltung der Daten
    if rb1.GetValue():
        zahl = 1
    elif rb2.GetValue():
        zahl = 2
    elif rb3.GetValue():
        zahl = 3
    # Anzeige der Daten
    stAusgewaehlteZahl.SetLabel(str(zahl))
    
# Erzeugung des Fensters
app = App()
frame = Frame(parent=None)
frame.SetTitle("Test")
frame.SetSize((128, 145))
frame.SetBackgroundColour("white")
frame.Show()
# Rahmen Zahl
panelZahl = Panel(parent=frame)
panelZahl.SetSize((110, 100))
panelZahl.SetPosition((5, 4))
panelZahl.SetBackgroundColour("#D5E88F")
# Label mit Überschrift für die Zahl
stUeberschriftZahl = StaticText(parent=panelZahl, style=ALIGN_CENTRE|ST_NO_AUTORESIZE)
stUeberschriftZahl.SetLabel("Zahl")
stUeberschriftZahl.SetSize((100, -1))
stUeberschriftZahl.SetPosition((5, 5))
stUeberschriftZahl.SetBackgroundColour("white")
# Radiobutton zur Eingabe der Zahl
rb1 = RadioButton(panelZahl, -1, '1', (5, 30), style=RB_GROUP)
rb2 = RadioButton(panelZahl, -1, '2', (40, 30))
rb3 = RadioButton(panelZahl, -1, '3', (75, 30))
# Label mit ausgewählter Zahl
stAusgewaehlteZahl = StaticText(parent=panelZahl, style=ALIGN_CENTRE|ST_NO_AUTORESIZE)
stAusgewaehlteZahl.SetLabel("")
stAusgewaehlteZahl.SetSize((20, -1))
stAusgewaehlteZahl.SetPosition((40, 52))
stAusgewaehlteZahl.SetBackgroundColour("white")
# Button zum Auswählen
bGewinn = wx.Button(parent=panelZahl)
bGewinn.SetLabel("Auswahl anzeigen")
bGewinn.SetPosition((5, 75))
bGewinn.SetSize((100, 20))
bGewinn.Bind(wx.EVT_BUTTON, Button_Auswahl_Click)
# Aktivierung des Fensters
app.MainLoop()

Im Testprogramm werden drei Radiobutton vorgegeben, von denen immer nur einer ausgewählt werden kann. Durch Anklicken der Schaltfläche wird die ausgewählte Zahl 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. Will man eine Gruppe von zusammengehörigen Radiobutton-Komponenten erzeugen, so muss bei der Erzeugung des ersten Radiobutton zusätzlich die Angabe style=RB_GROUP gemacht werden. Zugriff auf den ausgewählten Radiobutton erhält man mit der Operation GetValue. Diese liefert den Wert True, falls der Radiobutton ausgewählt ist, ansonsten den Wert False.

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