Fenster öffnen und schließen

Ein neues Fenster

Wir betrachten die folgende Interaktionssituation:

Anwendungsfenster

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.

Anwendungsfenster

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.

X

Fehler melden

X

Suche