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 *
def buttonBerechnenClick():
try:
gewicht = float(entryGewicht.get())
groesse = float(entryGroesse.get())
bmi = gewicht/(groesse*groesse)
bmiAnzeige = str(round(bmi*10)/10)
labelBMI.config(text=bmiAnzeige)
except:
def buttonOkClick():
tkFensterFehler.quit()
tkFensterFehler.destroy()
tkFensterFehler = Toplevel()
tkFensterFehler.title('Fehler')
tkFensterFehler.geometry('160x60')
labelFehler = Label(master=tkFensterFehler,
text='Keine sinnvolle Eingabe!')
labelFehler.place(x=5, y=5, width=150, height=20)
buttonOk = Button(master=tkFensterFehler, text='ok',
command=buttonOkClick)
buttonOk.place(x=5, y=30, width=150, height=20)
tkFenster = Tk()
tkFenster.title('BMI')
tkFenster.geometry('258x195')
labelGewicht = Label(master=tkFenster, bg='#FFCFC9', text='Gewicht in kg:')
labelGewicht.place(x=54, y=24, width=100, height=27)
entryGewicht = Entry(master=tkFenster, bg='white')
entryGewicht.place(x=164, y=24, width=40, height=27)
labelGroesse = Label(master=tkFenster, bg='#FFCFC9', text='Größe in m:')
labelGroesse.place(x=54, y=64, width=100, height=27)
entryGroesse = Entry(master=tkFenster, bg='white')
entryGroesse.place(x=164, y=64, width=40, height=27)
buttonBerechnen = Button(master=tkFenster, bg='#FBD975', text='berechnen',
command=buttonBerechnenClick)
buttonBerechnen.place(x=54, y=104, width=100, height=27)
labelBMIWert = Label(master=tkFenster, bg='#D5E88F', text='BMI-Wert:')
labelBMIWert.place(x=54, y=144, width=100, height=27)
labelBMI = Label(master=tkFenster, bg='gray', text='')
labelBMI.place(x=164, y=144, width=40, height=27)
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.