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
oderNeuen Paste erstellen