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
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:
messagebox.showerror('Fehler', 'Keine sinnvolle Eingabe!')
def buttonBeendenClick():
if messagebox.askyesno('Beenden', 'Soll das Programm wirklich beendet werden?'):
tkFenster.quit()
tkFenster.destroy()
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)
buttonBeenden = Button(master=tkFenster, bg='#FBD975', text='genug',
command=buttonBeendenClick)
buttonBeenden.place(x=164, y=104, width=40, 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()
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.