Anklicken von Schaltflächen

Zielsetzung

Die Benutzeroberfläche soll um Schaltflächen erweitert werden. Mit der einen Schaltfläche soll der Spieleinsatz vom Konto abgebucht werden, mit der anderen das Werfen der Würfel ausgelöst werden.

Anwendungsfenster

Schaltflächen als GUI-Objekte

Das folgende Testprogramm zeigt, wie man eine Schaltfläche erzeugt und und zur Verarbeitung von Daten nutzt.

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

def Button_Einsatz_Click(event):
    # Verwaltung der Daten
    konto = int(stKonto.GetLabel())
    # Verarbeitung der Daten
    konto = konto - 1
    # Anzeige der Daten
    stKonto.SetLabel(str(konto))
    
# Erzeugung des Fensters
app = App()
frame = Frame(parent=None)
frame.SetTitle("Test")
frame.SetSize((128, 145))
frame.SetBackgroundColour("white")
frame.Show()
# Label Konto
stKonto = StaticText(parent=frame, style=ALIGN_CENTRE|ST_NO_AUTORESIZE)
stKonto.SetLabel("100")
stKonto.SetFont(Font(14, NORMAL, NORMAL, NORMAL))
stKonto.SetSize((30, 25))
stKonto.SetPosition((45, 40))
stKonto.SetBackgroundColour("#FFCFC9")
# Button zum Einzahlen
bEinsatz = Button(parent=frame)
bEinsatz.SetLabel("Einsatz zahlen")
bEinsatz.SetPosition((10, 80))
bEinsatz.SetSize((100, 20))
bEinsatz.Bind(EVT_BUTTON, Button_Einsatz_Click)
# Aktivierung des Fensters
app.MainLoop()

Wenn der Benutzer die Schaltfläche mit der Aufschrift Einsatz zahlen anklickt, dann wird der Kontostand um den Wert 1 verringert.

Test

Schaltflächen werden durch Objekte der Klasse Button dargestellt. Durch die Anweisung bEinsatz = Button(...) wird im Testprogramm oben ein Objekt der Klasse Button erzeugt und an den Namen bEinsatz gebunden.

Wenn man eine Schaltfläche anklickt, werden (in der Regel) bestimmte Reaktionen ausgeführt. Reaktionen auf das Ereignis Mausklick auf Schaltfläche werden in einer Ereignisverarbeitungsprozedur festgelegt. Damit das Ereignis Mausklick auf eine bestimmte Schaltfläche die Ausführung der entsprechenden Ereignisverarbeitungsprozedur auslöst, muss die Ereignisverarbeitungsprozedur an die betreffende Schaltfläche angebunden werden. Diese erreicht man mit Operation Bind.

Im Programm oben wird beispielsweise durch die Anweisung bEinsatz.Bind(EVT_BUTTON, Button_Einsatz_Click) festgelegt, dass die Prozedur Button_Einsatz_Click ausgeführt wird, wenn die Schaltfläche zum Objekt bEinsatz angeklickt wird.

Die oben im Programm vorkommende Ereignisverarbeitungsprozedur kann als Muster für viele Datenverarbeitungsvorgänge dienen, bei denen die Daten von GUI-Objekten verwaltet werden.

def Button_Einsatz_Click(event):
    # Verwaltung der Daten
    konto = int(stKonto.GetLabel())
    # Verarbeitung der Daten
    konto = konto - 1
    # Anzeige der Daten
    stKonto.SetLabel(str(konto))

Schritt 1: Erst werden die benötigten Daten von Attributen betreffender GUI-Objekte übernommen und in Hilfsvariablen zwischengespeichert. Beachte, dass hier oft Tyanpassungen erforderlich sind.

Schritt 2: Die jetzt mit Hilfe von Variablen erfassten Daten werden mit Hilfe geeigneter Anweisungen verarbeitet.

Schritt 3: Die Ergebnisse der Verarbeitung werden zur Anzeige auf dem Bildschirm an geeignete GUI-Objekte weitergegeben. Auch hier können Typumwandlungen erforderlich sein.

Aufgabe 1

Erstell auch ein Testprogramm zum Würfeln.

Anwendungsfenster

Der folgende Python-Dialog zeigt, wie man das Werfen eines Würfels mit Python simulieren kann.

>>> from random import randint
>>> wuerfel = randint(1, 6)
>>> wuerfel
2

Aufgabe 2

Ergänze das chuck-a-luck-Programm so, dass der Benutzer mit einer Schaltfläche den Spieleinsatz vom Konto abgebuchen kann und mit einer weiteren Schaltfläche das Werfen der Würfel auslösen kann.

Anwendungsfenster
X

Fehler melden

X

Suche