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

Datenverwaltung mit GUI-Objekten

Beispiel - Zähler

Wir betrachten einen Zähler mit grafischer Benutzeroberfläche.

Anwendungsfenster

Hier der Quelltext zur Erzeugung der gezeigten GUI:

from tkinter import *

# Ereignisbehandlung
def buttonWeiterClick():
    stand = int(labelZahl.cget('text'))
    stand = stand + 1
    labelZahl.config(text=str(stand))

def buttonZurueckClick():
    stand = int(labelZahl.cget('text'))
    if stand > 0:
        stand = stand - 1
        labelZahl.config(text=str(stand))

def buttonNullClick():
    stand = 0
    labelZahl.config(text=str(stand))

# GUI-Objekte
# Fenster
tkFenster = Tk()
tkFenster.title('Zähler')
tkFenster.geometry('170x125')
# Label
labelZahl = Label(master=tkFenster, text='0', bg='gray', font=('Arial', 36))
labelZahl.place(x=5, y=5, width=160, height=80)
# Button
buttonWeiter = Button(master=tkFenster, text='weiter', bg='#D5E88F', command=buttonWeiterClick)
buttonWeiter.place(x=115, y=90, width=50, height=30)
buttonZurueck = Button(master=tkFenster, text='zurück', bg='#FFCFC9', command=buttonZurueckClick)
buttonZurueck.place(x=5, y=90, width=50, height=30)
buttonNull = Button(master=tkFenster, text='Null', bg='#FBD975', command=buttonNullClick)
buttonNull.place(x=60, y=90, width=50, height=30)
# Aktivierung des Fensters
tkFenster.mainloop()

Aufgabe 1

Analysiere das Programm. "Wer" ist für die Verwaltung des jeweiligen Zählerstands zuständig?

Datenverwaltung

Im Programm oben wird der Zählerstand vom GUI-Objekt labelZahl verwaltet. Dem text-Attribut des labelZahl-Objekt wird jeweils eine Zeichenkette zugewiesen, die den aktuellen Zählerstand darstellt. Es handelt sich hier also um eine indirekte Verwaltung des Zählerstands.

Datenverwaltung

GUI-Objekte sind eigentlich nicht für die Datenhaltung einer Anwendung gedacht. Ihre Aufgabe ist es vielmehr, die Daten von GUI-Komponenten zu verwalten. Deshalb ist die oben gezeigte Lösung, mit Hilfe eines Label-Objekts die Zählerdaten indirekt mitzuverwalten, keine gute Lösung.

Aufgabe 2

Mit einem Programm soll die Anmeldung mit einem Passwort simuliert werden.

Anwendungsfenster

Der Benutzer kann mit den Schaltflächen die Buchstaben A, B und C eingeben. Wenn er/sie die Buchstabenkombination richtig eingegeben hat, dann erhält er/sie eine positive, ansonsten eine negative Rückmeldung.

Warum funktioniert bei dieser Anwendung der Ansatz, die Daten zur Anwendung mit GUI-Objekten zu verwalten, nicht mehr?

X

Fehler melden

X

Suche