Messagebox-Fenster
Ein neues Fenster
Wir betrachten die folgende Interaktionssituation:

Wenn der Benutzer keine sinnvollen Eingaben macht, dann soll ein neues Fenster mit einer Fehlermeldung erzeugt werden.

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.

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.