# =================================================================== # Calculator # =================================================================== # From: restaurant management system # https://www.youtube.com/watch?v=hqC9tioGCi0 # =================================================================== import sys if sys.version_info.major == 3: from tkinter import * from tkinter.font import * py3 = True else: from Tkinter import * from tkFont import * py3 = False # ------------------------------------------------------------------- # --- global variables # --- Note: Consolas font must be installed on Linux # ------------------------------------------------------------------- #calcFont = ('aeril', '15', 'bold') #calcFont = ('Consolas', '15', 'bold') calcFont = ('monospace', '15', 'bold') # ------------------------------------------------------------------- # --- button callback functions # ------------------------------------------------------------------- def btnClick(numbers): global operator operator = operator + str(numbers) text_Input.set(operator) def btnClearDisplay(): global operator operator='' text_Input.set('') def btnEqualsInput(): global operator sumup = str(eval(operator)) text_Input.set(sumup) operator='' def quit(): sys.exit() # ------------------------------------------------------------------- # --- main # ------------------------------------------------------------------- root = Tk() root.title('Calculator') text_Input = StringVar() operator = '' f1 = Frame(root,relief='flat') f1.grid(row=0,column=0) f2 = Frame(root,relief='flat',padx=4, pady=4) f2.grid(row=1, column=0) Label(f1,font=calcFont,text='Calculator',bd=10).grid(row=0,column=0) # ------------------------------------------------------------------- # -- display # ------------------------------------------------------------------- txtDisplay = Entry(f2,font=calcFont, textvariable=text_Input, bd=8,insertwidth=4,justify='right') txtDisplay.grid(columnspan=4) # ------------------------------------------------------------------- # -- buttons # ------------------------------------------------------------------- Button(f2,padx=16,pady=16,bd=8,font=calcFont,text='7', command=lambda: btnClick(7)).grid(row=2,column=0) Button(f2,padx=16,pady=16,bd=8,font=calcFont,text='8', command=lambda: btnClick(8)).grid(row=2,column=1) Button(f2,padx=16,pady=16,bd=8,font=calcFont,text='9', command=lambda: btnClick(9)).grid(row=2,column=2) Button(f2,padx=16,pady=16,bd=8,font=calcFont,text='+', command=lambda: btnClick('+')).grid(row=2,column=3) # ------------------------------------------------------------------- Button(f2,padx=16,pady=16,bd=8,font=calcFont,text='4', command=lambda: btnClick(4)).grid(row=3,column=0) Button(f2,padx=16,pady=16,bd=8,font=calcFont,text='5', command=lambda: btnClick(5)).grid(row=3,column=1) Button(f2,padx=16,pady=16,bd=8,font=calcFont,text='6', command=lambda: btnClick(6)).grid(row=3,column=2) Button(f2,padx=16,pady=16,bd=8,font=calcFont,text='-', command=lambda: btnClick('+')).grid(row=3,column=3) # ------------------------------------------------------------------- Button(f2,padx=16,pady=16,bd=8,font=calcFont,text='1', command=lambda: btnClick(1)).grid(row=4,column=0) Button(f2,padx=16,pady=16,bd=8,font=calcFont,text='2', command=lambda: btnClick(2)).grid(row=4,column=1) Button(f2,padx=16,pady=16,bd=8,font=calcFont,text='3', command=lambda: btnClick(3)).grid(row=4,column=2) Button(f2,padx=16,pady=16,bd=8,font=calcFont,text='*', command=lambda: btnClick('*')).grid(row=4,column=3) # ------------------------------------------------------------------- Button(f2,padx=16,pady=16,bd=8,font=calcFont,text='0', command=lambda: btnClick(0)).grid(row=5,column=0) Button(f2,padx=16,pady=16,bd=8,font=calcFont,text='C', command=btnClearDisplay).grid(row=5,column=1) Button(f2,padx=16,pady=16,bd=8,font=calcFont,text='=', command=btnEqualsInput).grid(row=5,column=2) Button(f2,padx=16,pady=16,bd=8,font=calcFont,text='/', command=lambda: btnClick('/')).grid(row=5,column=3) # ------------------------------------------------------------------- Button(f2,padx=16,pady=16,bd=8,font=calcFont,text='(', command=lambda: btnClick('(')).grid(row=6,column=0) Button(f2,padx=16,pady=16,bd=8,font=calcFont,text=')', command=lambda: btnClick(')')).grid(row=6,column=1) Button(f2,padx=16,pady=16,bd=8,font=calcFont,text='.', command=lambda: btnClick('.')).grid(row=6,column=2) #Button(f2,padx=16,pady=16,bd=8,font=calcFont,text='Quit', # command=quit).grid(row=6,column=3) # ------------------------------------------------------------------- root.mainloop()