Messagebox-Fenster
Ein neues Fenster
Wir betrachten die folgende Interaktionssituation:
![Anwendungsfenster](https://inf-schule.de/content/9_software/1_gui/4_entwicklung_tkinter/13_fensterdialoge/2_messagebox/gui_bmi.png)
Wenn der Benutzer keine sinnvollen Eingaben macht, dann soll ein neues Fenster mit einer Fehlermeldung erzeugt werden.
![Anwendungsfenster](https://inf-schule.de/content/9_software/1_gui/4_entwicklung_tkinter/13_fensterdialoge/2_messagebox/gui_fehlermeldung.png)
Wenn der Benutzer die Schaltfläche mit der Beschriftung "genug" anklickt, dann soll in einem neuen Fenster nochmal nachgefragt werden, ob der Benutzer das Programm tatsächlich beenden möchte.
![Anwendungsfenster](https://inf-schule.de/content/9_software/1_gui/4_entwicklung_tkinter/13_fensterdialoge/2_messagebox/gui_beenden.png)
Das folgende Programm zeigt, wie man solche Messagebox-Fenster auf einfache Weise erzeugen kann.
from tkinter import *
from tkinter import messagebox #zusätzlich nötig
# 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:
messagebox.showerror('Fehler', 'Keine sinnvolle Eingabe!')
def buttonBeendenClick():
if messagebox.askyesno('Beenden', 'Soll das Programm wirklich beendet werden?'):
tkFenster.quit()
tkFenster.destroy()
# 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)
# Button Beenden
buttonBeenden = Button(master=tkFenster, bg='#FBD975', text='genug',
command=buttonBeendenClick)
buttonBeenden.place(x=164, y=104, width=40, 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()
Aufgabe 1
Welche Programmteile sind für die Erzeugung der Messagebox-Fenster zuständig? Ändere sie geringfügig ab, um deine Vermutungen zu überprüfen.