Fenster öffnen und schließen
Ein neues Fenster
Wir betrachten die folgende Interaktionssituation:
Wenn der Benutzer keine sinnvollen Eigaben macht, dann soll ein neues Fenster mit einer Rückmeldung an den Benutzer erzeugt werden. Dieses neue Fenster kann der Benutzer durch Anklicken der Schaltfläche mit der Bechriftung "ok" wieder schließen.
Das folgende Programm zeigt, wie man ein neues Fenster öffnen und auch wieder schießen kann.
from tkinter import *
# Ereignisbehandlung
def buttonBerechnenClick():
try:
# Übernahme der Daten
gewicht = float(entryGewicht.get())
groesse = float(entryGroesse.get())
# Verarbeitung der Daten
bmi = gewicht/(groesse*groesse)
bmiAnzeige = str(round(bmi*10)/10)
# Anzeige der Daten
labelBMI.config(text=bmiAnzeige)
except:
# Ereignisbehandlung
def buttonOkClick():
tkFensterFehler.quit()
tkFensterFehler.destroy()
# Neues Fenster öffnen
tkFensterFehler = Toplevel()
tkFensterFehler.title('Fehler')
tkFensterFehler.geometry('160x60')
# Label mit der Fehlermeldung
labelFehler = Label(master=tkFensterFehler,
text='Keine sinnvolle Eingabe!')
labelFehler.place(x=5, y=5, width=150, height=20)
# Button zum Schließen des Fensters
buttonOk = Button(master=tkFensterFehler, text='ok',
command=buttonOkClick)
buttonOk.place(x=5, y=30, width=150, height=20)
# Fenster
tkFenster = Tk()
tkFenster.title('BMI')
tkFenster.geometry('258x195')
# Label mit Aufschrift Gewicht
labelGewicht = Label(master=tkFenster, bg='#FFCFC9', text='Gewicht in kg:')
labelGewicht.place(x=54, y=24, width=100, height=27)
# Entry für das Gewicht
entryGewicht = Entry(master=tkFenster, bg='white')
entryGewicht.place(x=164, y=24, width=40, height=27)
# Label mit Aufschrift Größe
labelGroesse = Label(master=tkFenster, bg='#FFCFC9', text='Größe in m:')
labelGroesse.place(x=54, y=64, width=100, height=27)
# Entry für die Größe
entryGroesse = Entry(master=tkFenster, bg='white')
entryGroesse.place(x=164, y=64, width=40, height=27)
# Button zum Berechnen
buttonBerechnen = Button(master=tkFenster, bg='#FBD975', text='berechnen',
command=buttonBerechnenClick)
buttonBerechnen.place(x=54, y=104, width=100, height=27)
# Label mit Aufschrift BMI-Wert
labelBMIWert = Label(master=tkFenster, bg='#D5E88F', text='BMI-Wert:')
labelBMIWert.place(x=54, y=144, width=100, height=27)
# Label für den BMI-Wert
labelBMI = Label(master=tkFenster, bg='gray', text='')
labelBMI.place(x=164, y=144, width=40, height=27)
# Aktivierung des Fensters
tkFenster.mainloop()
Beachte, dass zum Öffnen eines Fensters ein neues Fenster-Objekt erzeugt werden muss. Zur Erzeugung
eines solchen zusätzlichen Fensters benutzt man die Klasse Toplevel
.
Beim Schließen eines Fensters sollte das zugehörige Fenster-Objekt auch wieder vernichtet werden.
Dies leistet die Kombination aus einer quit()
-Anweisung gefolgt von einer
destroy()
-Anweisung.
Aufgabe 1
Teste das vorgegebene Programm.