FlatBin

Taschenrechner Final

from tkinter import * from tkinter import ttk from tkinter import messagebox root = Tk() frameNormal = ttk.Frame(root) frameExtended = ttk.Frame(root) frameNormal.grid(row=1) calcHistory = [] extendedView = False #Hilfe anzeigen def showHelp(): messagebox.showinfo("Hilfe","Willkommen in der Hilfe zum Taschenrechner\n\nWenn Sie nicht wissen, wie sie zu rechnen haben, besuchen Sie erneut die Grundschule. :)\n\nSchönen Tag noch") #Berechnen Funktion def berechnen(): global extendedView toCalc = entryVarNormal.get() if extendedView == False else entryVarExtended.get() calc = str(eval(toCalc)) calcHistory.append(toCalc + " = " + calc + "\n") textAreaNormal.insert(0.0, calcHistory[-1]) textArea.insert(0.0, calcHistory[-1]) #Ansichten umschalten def switchView(f1, f2): global extendedView if extendedView == False: f1.grid_forget() f2.grid() extendedView = True else: f2.grid_forget() f1.grid() extendedView = False entryVarNormal.set("") entryVarExtended.set("") #Eingabefunktion def eingeben(idx): if idx == 17: entryVarExtended.set("") elif idx == 18: berechnen() else: entryVarExtended.set(entryVarExtended.get() + uiLabels[idx]) # Erstellen der Menüleiste menubar = Menu(root) root.config(menu=menubar) # Erstellen des "Datei"-Menüs view_menu = Menu(menubar, tearoff=0) view_menu.add_command(label="Normale Ansicht", command=lambda: switchView(frameNormal, frameExtended)) view_menu.add_separator() view_menu.add_command(label="Erweiterte Ansicht", command=lambda: switchView(frameNormal, frameExtended)) # Hinzufügen des Ansicht Menüs zur Menüleiste menubar.add_cascade(label="Ansicht", menu=view_menu) #Hinzufügen des Hilfemenüpunktes zum Menü menubar.add_cascade(label="Hilfe", command=showHelp) #Stringvar, Entry & zugehöriges Label für Eingabe erstellen (Normale View) ttk.Label(frameNormal, text="Ihre Eingabe:").grid(row=0, column=0) entryVarNormal = StringVar() Entry(frameNormal,justify=RIGHT,width=50,textvariable=entryVarNormal).grid(row=1, column=0, columnspan=3) #Button zum Berechnen erstellen (Normale View) ttk.Button(frameNormal, text="Berechnen", command=berechnen).grid(row=1, column=3) #History & zugehöriges Label erstellen (Normale View) ttk.Label(frameNormal, text="Verlauf:").grid(row=2, column=0) textAreaNormal = Text(frameNormal, width=50, height=10) textAreaNormal.grid(row=3, columnspan=4) #Stringvar & Entry für Eingabe erstellen (Extended View) entryVarExtended = StringVar() Entry(frameExtended,justify=RIGHT,width=50,textvariable=entryVarExtended).grid(row=0, column=0, columnspan=5) uiLabels = ["7","8","9","(",")","4","5","6","*","/","1","2","3","+","-","0",".","C","="] #Buttons erstellen (Extended View) for i in range(0,len(uiLabels)): ttk.Button(frameExtended, text=uiLabels[i], command=lambda i=i:eingeben(i)).grid(column=i%5,row=2+int(i/5), padx=3, pady=3) #History erstellen (Extended View) textArea = Text(frameExtended, width=50, height=10) textArea.grid(row=10, columnspan=5)

Zum Ordner dieses Pastes

oder
Neuen Paste erstellen