Anzeige von Text und Daten
Zielsetzung
Mit Hilfe von Schriftfeldern (Label) sollen Daten als Texte auf der Benutzeroberfläche dargestellt werden. Als Beispiel betrachten wir die Darstellung eines Kalenders.
![Anwendungsfenster](https://inf-schule.de/content/9_software/1_gui/4_entwicklung_tkinter/2_anzeigetextdaten/gui_kalender.png)
Schriftfelder als GUI-Objekte
Das folgende Testprogramm zeigt, wie man Schriftfelder erzeugt und zur Anzeige von Texten und Daten nutzt.
from tkinter import *
# Erzeugung des Fensters
tkFenster = Tk()
tkFenster.title('Kalender')
tkFenster.geometry('130x145')
# Label für die Anzeige der Daten
labelMonat = Label(master=tkFenster, text='Januar', fg='white', bg='gray', font=('Arial', 16))
labelMonat.place(x=5, y=5, width=120, height=20)
labelTag = Label(master=tkFenster, text='21', fg='red', bg='#FFCFC9', font=('Arial', 72))
labelTag.place(x=5, y=30, width=120, height=80)
labelWochentag = Label(master=tkFenster, text='Montag')
labelWochentag.place(x=35, y=115, width=60, height=30)
# Aktivierung des Fensters
tkFenster.mainloop()
Schriftfelder werden als Objekte der Klasse Label
implementiert.
Im Programm oben werden drei Label
-Objekte erzeugt:
Die Anweisungen
labelMonat = Label(...)
, labelTag = Label(...)
und labelWochentag = Label(...)
erzeugen jeweils ein Objekt der Klasse Label
und binden sie an passende Bezeichner.
Diese Objekte verwalten die Schriftfelder im Anwendungsfenster.
Bei der Erzeugung der Label
-Objekte werden auch gleich Attribute initialisiert.
Die Werte werden dabei mit Hilfe von Parametern direkt übergeben.
Man erkennt am Beispiel bereits einige wichtige Attribute eines Labels:
Attribut | Bedeutung |
---|---|
master | ... wird noch geklärt ... |
text | Beschriftung |
bg (bzw. background) | Hintergrundfarbe |
fg (bzw. foreground) | Textfarbe |
font | Schriftformat |
Zugriff auf die Attribute
Auf Attribute eines GUI-Objekts kann man lesend und schreibend zugreifen. Im folgenden Programm wird dies exemplarisch aufgezeigt.
from tkinter import *
# Erzeugung des Fensters
tkFenster = Tk()
tkFenster.title('Kalender')
tkFenster.geometry('130x85')
# Label für die Anzeige der Daten
labelWochentag = Label(master=tkFenster, text='Montag', fg='white', bg='gray', font=('Arial', 16))
labelWochentag.place(x=5, y=5, width=120, height=20)
labelTag = Label(master=tkFenster, text='21', fg='red', bg='#FFCFC9', font=('Arial', 24))
labelTag.place(x=5, y=30, width=55, height=50)
schriftfarbe = labelTag.cget('fg') # lesender Zugriff auf Attribute von labelTag
hintergrundfarbe = labelTag.cget('bg') # lesender Zugriff auf Attribute von labelTag
schriftformat = labelTag.cget('font') # lesender Zugriff auf Attribute von labelTag
labelMonat = Label(master=tkFenster, text='01')
labelMonat.config(fg=schriftfarbe) # schreibender Zugriff auf Attribute von labelMonat
labelMonat.config(bg=hintergrundfarbe) # schreibender Zugriff auf Attribute von labelMonat
labelMonat.config(font=schriftformat) # schreibender Zugriff auf Attribute von labelMonat
labelMonat.place(x=70, y=30, width=55, height=50)
# Aktivierung des Fensters
tkFenster.mainloop()
Das Programm erzeugt diese grafische Benutzeroberfläche.
![Anwendungsfenster](https://inf-schule.de/content/9_software/1_gui/4_entwicklung_tkinter/2_anzeigetextdaten/gui_kalender3.png)
Jedes Label
-Objekt stellt die in der Übersicht gezeigten Methoden zur Verfügung.
Methode | Bedeutung |
---|---|
cget(option) | Liefert den Wert des übergebenen Attributparameters. |
config(option=wert) | Setzt den Wert eines Attributs. |
Beachte, dass die Methoden cget(...)
und config(...)
für alle GUI-Objekte zur Verfügung stehen.
Mit der Methode cget(...)
kann man lesend auf Attributwerte eines GUI-Objekts zugreifen.
Beispielsweise liefert die Anweisung labelTag.cget('fg')
den aktuellen Wert des Attributs
fg
des Label
-Objekts labelTag
.
Mit der Methode config(...)
kann man Attributwerte eines GUI-Objekts festlegen.
So bewirkt beispielsweise die Anweisung labelMonat.config(fg='red')
,
dass das Attribut
fg
des Label
-Objekts labelMonat
den Wert 'red'
erhält.
Aufgabe 1
(a) Im folgenden Programm werden die darzustellenden Daten von Variablen verwaltet. Ergänze das Programm so, dass die oben unter "Zielsetzung" gezeigte GUI erzeugt wird.
# Daten
tag = 21
monat = 'Januar'
wochentag = 'Montag'
# GUI
from tkinter import *
# Erzeugung des Fensters
tkFenster = Tk()
tkFenster.title('Kalender')
tkFenster.geometry('130x145')
# Label für die Anzeige der Daten
labelMonat = # ...
labelMonat.place(x=5, y=5, width=120, height=20)
labelTag = # ...
labelTag.place(x=5, y=30, width=120, height=80)
labelWochentag = # ...
labelWochentag.place(x=35, y=115, width=60, height=30)
# Aktivierung des Fensters
tkFenster.mainloop()
(b) Warum ist es oft günstig, die Daten separat mit Variablen zu verwalten?
Aufgabe 2
Ändere das ganz oben auf dieser Seite gezeigte Programm (im Abschnitt "Schriftfelder als GUI-Objekte") so ab, dass folgende GUI erzeugt wird.
![Anwendungsfenster](https://inf-schule.de/content/9_software/1_gui/4_entwicklung_tkinter/2_anzeigetextdaten/gui_kalender2.png)
Aufgabe 3
Erstelle ein Programm zur Erzeugung der folgenden Benutzeroberfläche:
![Anwendungsfenster](https://inf-schule.de/content/9_software/1_gui/4_entwicklung_tkinter/2_anzeigetextdaten/gui_grossklein.png)