Datenverwaltung mit Kontrollvariablen
Zur Orientierung
Kontrollvariablen werden an Attribute von GUI-Objekten angebunden. Mit dieser Anbindung kann man direkt auf Daten einer GUI-Komponente zugreifen und sie gegebenenfalls auch verändern. Wir verdeutlichen dies mit zwei sehr einfachen Beispielen.
Beispiel 1: Austausch von Daten
Der im Eingabefeld eingegebene Text soll in verschiedenen Schriftgrößen direkt auf Schriftfeldern angezeigt werden.
Im folgenden Programm wird die Kontrollvariable text
zum
Datenaustausch benutzt.
from tkinter import *
# Erzeugung des Fensters
tkFenster = Tk()
tkFenster.title('Test')
tkFenster.geometry('120x130')
# Rahmen Eingabe
frameEingabe = Frame(master=tkFenster, bg='#FFCFC9')
frameEingabe.place(x=5, y=5, width=110, height=35)
# Rahmen Ausgabe
frameAusgabe = Frame(master=tkFenster, bg='#D5E88F')
frameAusgabe.place(x=5, y=45, width=110, height=80)
# Kontrollvariable
text = StringVar()
# Entry Text
entryText = Entry(master=frameEingabe, bg='white', textvariable=text)
entryText.place(x=5, y=5, width=100, height=20)
# Label Text
labelText1 = Label(master=frameAusgabe, bg='white', font=('Arial', 8), textvariable=text)
labelText1.place(x=5, y=5, width=100, height=20)
labelText2 = Label(master=frameAusgabe, bg='white', font=('Arial', 12), textvariable=text)
labelText2.place(x=5, y=30, width=100, height=20)
labelText3 = Label(master=frameAusgabe, bg='white', font=('Arial', 16), textvariable=text)
labelText3.place(x=5, y=55, width=100, height=20)
# Aktivierung des Fensters
tkFenster.mainloop()
Mit der Anweisung text = StringVar()
wird die Kontrollvariable erzeugt.
Diese Kontrollvariable ist keine Variable im herkömmlichen Sinn. Es handelt sich hier vielmehr
um ein Objekt, das eine Zeichenkette verwaltet.
Mit textvariable=text
wird diese Kontrollvariable
an ein Entry
- bzw. Label
-Objekt angebunden.
Wenn der Benutzer Zeichen in das Eingabefeld eingibt, dann ändert sich der Wert der
angebundenen Kontrollvariablen. Diese Änderung wirkt sich sofort auch auf die
Anzeige der Label
-Objekte aus, die an dieselbe Kontrollvariable angebunden sind.
Aufgabe 1
Probiere das selbst einmal aus.
Beispiel 2: Veränderung von Kontrollvariablen
Hier wird die im Schriftfeld vorgegebene Zahl bei jedem Klick auf den Button um 1 erhöht.
Auch hier wird die Kontrollvariable text
zum
Datenaustausch benutzt.
from tkinter import *
# Ereignisverarbeitung
def buttonVerarbeitenClick():
zahl = int(text.get())
zahl = zahl+1
text.set(str(zahl))
# Erzeugung des Fensters
tkFenster = Tk()
tkFenster.title('Test')
tkFenster.geometry('120x75')
# Rahmen Label
frameLabel = Frame(master=tkFenster, bg='#FFCFC9')
frameLabel.place(x=5, y=5, width=110, height=30)
# Rahmen Verarbeitung
frameVerarbeitung = Frame(master=tkFenster, bg='#FBD975')
frameVerarbeitung.place(x=5, y=40, width=110, height=30)
# Kontrollvariable
text = StringVar()
text.set('0')
# Button
buttonVerarbeiten = Button(master=frameVerarbeitung, text='weiter', command=buttonVerarbeitenClick)
buttonVerarbeiten.place(x=5, y=5, width=100, height=20)
# Label Text
labelText = Label(master=frameLabel, bg='white', textvariable=text)
labelText.place(x=5, y=5, width=100, height=20)
# Aktivierung des Fensters
tkFenster.mainloop()
Mit der get
-Methode kann man auf den Wert einer Kontrollvariable zugreifen.
Mit der set
-Methode kann man den Wert einer Kontrollvariable gezielt setzen.
Aufgabe 2
Experimentiere selbst mit Kontrollvariablen.
Typen von Kontrollvariablen
In den Beispielen oben wurden Kontrollvariablen zur Verwaltung von Zeichenketten benutzt. Es gibt auch die Möglichkeit, andere Daten zu verwalten.
Objekt-Typ | Beschreibung |
---|---|
StringVar | Verwaltung einer Zeichenkette |
IntVar | Verwaltung einer ganzen Zahl |
DoubleVar | Verwaltung einer Gleitkommazahl |
BooleanVar | Verwaltung eines Wahrheitswerts |
Wir werden Kontrollvariablen im Abschnitt Auswahl mit Radiobutton benutzen, um Radiobuttons zu verwalten.