from Tkinter import*
import math
import parser
import tkMessageBox
root= Tk()
root.title("Scientific caculator")
root.configure(background ="peach puff")
#root.resizable(width =False, height=False)
root.geometry("480x568+0+0")
calc= Frame(root)
calc.grid()
class Calc():
def __init__(self):
self.total = 0
self.current = ""
self.input_value = True
self.check_sum = False
self.op = ""
self.result = False
def numberEnter(self,num):
self.result = False
firstnum = txtDisplay.get()
secondnum = str(num)
if self.input_value:
self.current = secondnum
self.input_value = False
else:
if secondnum == '.':
if secondnum in firstnum:
return
self.current = firstnum + secondnum
self.display(self.current)
def sum_of_total(self):
self.result = True
self.current = float(self.current)
if self.check_sum == True:
self.valid_function()
else:
self.total = float(txtDisplay.get())
def display(self,value):
txtDisplay.delete(0,END)
txtDisplay.insert(0,value)
def valid_function(self):
if self.op =="add":
self.total += self.current
if self.op == "sub":
self.total -= self.current
if self.op == "multi":
self.total *= self.current
if self.op == "divide":
self.total /= self.current
if self.op == "mod":
self.total %= self.current
self.input_value = True
self.check_sum = False
self.display(self.total)
def operation(self, op):
self.current = float(self.current)
if self.check_sum:
self.valid_function()
elif not self.result:
self.total = self.current
self.input_value = True
self.check_sum = True
self.op = op
self.result = False
def Clear_Entry(self):
self.result = False
self.current = "0"
self.display(0)
self.input_value = True
def all_Clear_Entry(self):
self.Clear_Entry()
self.total = 0
def MathsPM(self):
self.result = False
self.current = -(float(txtDisplay.get()))
self.display(self.current)
def squared(self):
self.result = False
self.current = math.sqrt(float(txtDisplay.get()))
self.display(self.current)
def cos(self):
self.result = False
self.current = math.cos(math.radians(float(txtDisplay.get())))
self.display(self.current)
def cosh(self):
self.result = False
self.current = math.cosh(math.radians(float(txtDisplay.get())))
self.display(self.current)
def tan(self):
self.result = False
self.current = math.tan(math.radians(float(txtDisplay.get())))
self.display(self.current)
def tanh(self):
self.result = False
self.current = math.tanh(math.radians(float(txtDisplay.get())))
self.display(self.current)
def sin(self):
self.result = False
self.current = math.sin(math.radians(float(txtDisplay.get())))
self.display(self.current)
def sinh(self):
self.result = False
self.current = math.sinh(math.radians(float(txtDisplay.get())))
self.display(self.current)
def log(self):
self.result = False
self.current = math.log(float(txtDisplay.get()))
self.display(self.current)
def exp(self):
self.result = False
self.current = math.exp(float(txtDisplay.get()))
self.display(self.current)
def pi(self):
self.result = False
self.current = math.pi
self.display(self.current)
def tau(self):
self.result = False
self.current = math.tau
self.display(self.current)
def e(self):
self.result = False
self.current = math.e
self.display(self.current)
def acosh(self):
self.result = False
self.current = math.acosh(float(txtDisplay.get()))
self.display(self.current)
def asinh(self):
self.result = False
self.current = math.asinh(float(txtDisplay.get()))
self.display(self.current)
def exmp1(self):
self.result = False
self.current = math.exmp1(float(txtDisplay.get()))
self.display(self.current)
def lgamma(self):
self.result = False
self.current = math.lgamma(float(txtDisplay.get()))
self.display(self.current)
def degrees(self):
self.result = False
self.current = math.degrees(float(txtDisplay.get()))
self.display(self.current)
def log2(self):
self.result = False
self.current = math.log2(float(txtDisplay.get()))
self.display(self.current)
def log10(self):
self.result = False
self.current = math.log10(float(txtDisplay.get()))
self.display(self.current)
def log1p(self):
self.result = False
self.current = math.log1p(float(txtDisplay.get()))
self.display(self.current)
added_value = Calc()
txtDisplay = Entry(calc ,font=('arial',20,'bold'),bg = "snow", bd=30 , width =28,justify=RIGHT)
txtDisplay.grid(row=0 ,column=0,columnspan=4,pady=1)
txtDisplay.insert(0,"0")
numberpad = "789456123"
i =0
btn =[]
for j in range(2,5):
for k in range(3):
btn.append(Button(calc,width=6,height=2,font=('arial',20,'bold'),bd=4, text =numberpad[i]))
btn[i].grid(row =j , column =k, pady =1)
btn[i]["command"]=lambda x = numberpad[i]: added_value.numberEnter(x)
i +=1
#====================================Standard======================================================
btnClear= Button(calc, text ="C",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.Clear_Entry).grid(row=1 , column=0,pady=1)
btnAllClear= Button(calc, text ="CE",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.all_Clear_Entry).grid(row=1 , column=1,pady=1)
btnsq= Button(calc, text ="√",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.squared).grid(row=1 , column=2,pady=1)
btnAdd= Button(calc, text ="+",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = lambda : added_value.operation("add")).grid(row=1 , column=3,pady=1)
btnSub= Button(calc, text ="-",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = lambda : added_value.operation("sub")).grid(row=2 , column=3,pady=1)
btnMult= Button(calc, text ="*",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = lambda : added_value.operation("multi")).grid(row=3 , column=3,pady=1)
btnDiv= Button(calc, text =chr(247),width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = lambda : added_value.operation("divide")).grid(row=4 , column=3,pady=1)
btnZero= Button(calc, text ="0",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = lambda : added_value.numberEnter(0)).grid(row=5 , column=0,pady=1)
btnDot= Button(calc, text =".",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = lambda : added_value.numberEnter(".")).grid(row=5 , column=1,pady=1)
btnPM= Button(calc, text =chr(177),width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.MathsPM).grid(row=5 , column=2,pady=1)
btnEquals= Button(calc, text ="=",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.sum_of_total).grid(row=5 , column=3,pady=1)
#=========================================Scientific================================================
btnPi= Button(calc, text ="π",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.pi).grid(row=1 , column=4,pady=1)
btnCos= Button(calc, text = "cos",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.cos).grid(row=1 , column=5,pady=1)
btntan= Button(calc, text = "tan",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.tan).grid(row=1 , column=6,pady=1)
btnsin= Button(calc, text ="sin",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.sin).grid(row=1 , column=7,pady=1)
#========================================Scientific==================================================
btn2pi= Button(calc, text ="2π",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.tau).grid(row=2 , column=4,pady=1)
btnCosh= Button(calc, text ="cosh", width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.cosh).grid(row=2 , column=5,pady=1)
btntanh= Button(calc, text ="tanh", width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.tanh).grid(row=2 , column=6,pady=1)
btnsinh= Button(calc, text ="sinh", width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.sinh).grid(row=2 , column=7,pady=1)
#=========================================Scientific================================================
btnlog= Button(calc, text ="log", width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.log).grid(row=3 , column=4,pady=1)
btnExp= Button(calc, text ="Exp", width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.exp).grid(row=3 , column=5,pady=1)
btnMod= Button(calc, text ="Mod", width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = lambda : added_value.operation("mod")).grid(row=3 , column=6,pady=1)
btnE= Button(calc, text ="e",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.e).grid(row=3 , column=7,pady=1)
#=========================================Scientific================================================
btnlog2= Button(calc, text ="log2", width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.log2).grid(row=4 , column=4,pady=1)
btndeg= Button(calc, text ="deg",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.degrees).grid(row=4 , column=5,pady=1)
btnacosh= Button(calc, text ="acosh", width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.acosh).grid(row=4 , column=6,pady=1)
btnasinh= Button(calc, text ="asinh", width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.asinh).grid(row=4 , column=7,pady=1)
#=========================================Scientific================================================
btnlog10= Button(calc, text ="log10", width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.log10).grid(row=5 , column=4,pady=1)
btnlog1p= Button(calc, text ="deg1p", width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.log1p).grid(row=5 , column=5,pady=1)
btnexpml= Button(calc, text ="expml", width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.exmp1).grid(row=5 , column=6,pady=1)
btnlgamma= Button(calc, text ="lgamma",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.lgamma).grid(row=5 , column=7,pady=1)
lblDisplay = Label(calc, text="Scientific",font=('arial',30,'bold'),justify= CENTER)
lblDisplay.grid(row =0 , column =4,columnspan=4)
#======================================Menu and function===================================
def iExit():
iExit = tkinter.messagebox.askyesno("Scientific caculator","Confirm if you want to exit")
if iExit > 0:
root.destroy()
return
def Standard():
root.resizable(width =False, height=False)
root.geometry("480x568+0+0")
def Scientific():
root.resizable(width =False, height=False)
root.geometry("944x568+0+0")
def HelpView():
tkinter.messagebox.showinfo("Scientific caculator","Please refer windows calculator for more operation")
menubar = Menu(calc)
filemenu = Menu(menubar, tearoff =0)
menubar.add_cascade(label = "File", menu=filemenu)
filemenu.add_command(label = "Standard",command = Standard)
filemenu.add_command(label = "Scientific",command = Scientific)
filemenu.add_command(label = "Exit", command = iExit)
helpmenu = Menu(menubar, tearoff =0)
menubar.add_cascade(label = "Help", menu=helpmenu)
helpmenu.add_command(label = "View Help",command = HelpView)
root.configure(menu=menubar)
root.mainloop()
import math
import parser
import tkMessageBox
root= Tk()
root.title("Scientific caculator")
root.configure(background ="peach puff")
#root.resizable(width =False, height=False)
root.geometry("480x568+0+0")
calc= Frame(root)
calc.grid()
class Calc():
def __init__(self):
self.total = 0
self.current = ""
self.input_value = True
self.check_sum = False
self.op = ""
self.result = False
def numberEnter(self,num):
self.result = False
firstnum = txtDisplay.get()
secondnum = str(num)
if self.input_value:
self.current = secondnum
self.input_value = False
else:
if secondnum == '.':
if secondnum in firstnum:
return
self.current = firstnum + secondnum
self.display(self.current)
def sum_of_total(self):
self.result = True
self.current = float(self.current)
if self.check_sum == True:
self.valid_function()
else:
self.total = float(txtDisplay.get())
def display(self,value):
txtDisplay.delete(0,END)
txtDisplay.insert(0,value)
def valid_function(self):
if self.op =="add":
self.total += self.current
if self.op == "sub":
self.total -= self.current
if self.op == "multi":
self.total *= self.current
if self.op == "divide":
self.total /= self.current
if self.op == "mod":
self.total %= self.current
self.input_value = True
self.check_sum = False
self.display(self.total)
def operation(self, op):
self.current = float(self.current)
if self.check_sum:
self.valid_function()
elif not self.result:
self.total = self.current
self.input_value = True
self.check_sum = True
self.op = op
self.result = False
def Clear_Entry(self):
self.result = False
self.current = "0"
self.display(0)
self.input_value = True
def all_Clear_Entry(self):
self.Clear_Entry()
self.total = 0
def MathsPM(self):
self.result = False
self.current = -(float(txtDisplay.get()))
self.display(self.current)
def squared(self):
self.result = False
self.current = math.sqrt(float(txtDisplay.get()))
self.display(self.current)
def cos(self):
self.result = False
self.current = math.cos(math.radians(float(txtDisplay.get())))
self.display(self.current)
def cosh(self):
self.result = False
self.current = math.cosh(math.radians(float(txtDisplay.get())))
self.display(self.current)
def tan(self):
self.result = False
self.current = math.tan(math.radians(float(txtDisplay.get())))
self.display(self.current)
def tanh(self):
self.result = False
self.current = math.tanh(math.radians(float(txtDisplay.get())))
self.display(self.current)
def sin(self):
self.result = False
self.current = math.sin(math.radians(float(txtDisplay.get())))
self.display(self.current)
def sinh(self):
self.result = False
self.current = math.sinh(math.radians(float(txtDisplay.get())))
self.display(self.current)
def log(self):
self.result = False
self.current = math.log(float(txtDisplay.get()))
self.display(self.current)
def exp(self):
self.result = False
self.current = math.exp(float(txtDisplay.get()))
self.display(self.current)
def pi(self):
self.result = False
self.current = math.pi
self.display(self.current)
def tau(self):
self.result = False
self.current = math.tau
self.display(self.current)
def e(self):
self.result = False
self.current = math.e
self.display(self.current)
def acosh(self):
self.result = False
self.current = math.acosh(float(txtDisplay.get()))
self.display(self.current)
def asinh(self):
self.result = False
self.current = math.asinh(float(txtDisplay.get()))
self.display(self.current)
def exmp1(self):
self.result = False
self.current = math.exmp1(float(txtDisplay.get()))
self.display(self.current)
def lgamma(self):
self.result = False
self.current = math.lgamma(float(txtDisplay.get()))
self.display(self.current)
def degrees(self):
self.result = False
self.current = math.degrees(float(txtDisplay.get()))
self.display(self.current)
def log2(self):
self.result = False
self.current = math.log2(float(txtDisplay.get()))
self.display(self.current)
def log10(self):
self.result = False
self.current = math.log10(float(txtDisplay.get()))
self.display(self.current)
def log1p(self):
self.result = False
self.current = math.log1p(float(txtDisplay.get()))
self.display(self.current)
added_value = Calc()
txtDisplay = Entry(calc ,font=('arial',20,'bold'),bg = "snow", bd=30 , width =28,justify=RIGHT)
txtDisplay.grid(row=0 ,column=0,columnspan=4,pady=1)
txtDisplay.insert(0,"0")
numberpad = "789456123"
i =0
btn =[]
for j in range(2,5):
for k in range(3):
btn.append(Button(calc,width=6,height=2,font=('arial',20,'bold'),bd=4, text =numberpad[i]))
btn[i].grid(row =j , column =k, pady =1)
btn[i]["command"]=lambda x = numberpad[i]: added_value.numberEnter(x)
i +=1
#====================================Standard======================================================
btnClear= Button(calc, text ="C",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.Clear_Entry).grid(row=1 , column=0,pady=1)
btnAllClear= Button(calc, text ="CE",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.all_Clear_Entry).grid(row=1 , column=1,pady=1)
btnsq= Button(calc, text ="√",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.squared).grid(row=1 , column=2,pady=1)
btnAdd= Button(calc, text ="+",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = lambda : added_value.operation("add")).grid(row=1 , column=3,pady=1)
btnSub= Button(calc, text ="-",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = lambda : added_value.operation("sub")).grid(row=2 , column=3,pady=1)
btnMult= Button(calc, text ="*",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = lambda : added_value.operation("multi")).grid(row=3 , column=3,pady=1)
btnDiv= Button(calc, text =chr(247),width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = lambda : added_value.operation("divide")).grid(row=4 , column=3,pady=1)
btnZero= Button(calc, text ="0",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = lambda : added_value.numberEnter(0)).grid(row=5 , column=0,pady=1)
btnDot= Button(calc, text =".",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = lambda : added_value.numberEnter(".")).grid(row=5 , column=1,pady=1)
btnPM= Button(calc, text =chr(177),width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.MathsPM).grid(row=5 , column=2,pady=1)
btnEquals= Button(calc, text ="=",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.sum_of_total).grid(row=5 , column=3,pady=1)
#=========================================Scientific================================================
btnPi= Button(calc, text ="π",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.pi).grid(row=1 , column=4,pady=1)
btnCos= Button(calc, text = "cos",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.cos).grid(row=1 , column=5,pady=1)
btntan= Button(calc, text = "tan",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.tan).grid(row=1 , column=6,pady=1)
btnsin= Button(calc, text ="sin",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.sin).grid(row=1 , column=7,pady=1)
#========================================Scientific==================================================
btn2pi= Button(calc, text ="2π",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.tau).grid(row=2 , column=4,pady=1)
btnCosh= Button(calc, text ="cosh", width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.cosh).grid(row=2 , column=5,pady=1)
btntanh= Button(calc, text ="tanh", width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.tanh).grid(row=2 , column=6,pady=1)
btnsinh= Button(calc, text ="sinh", width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.sinh).grid(row=2 , column=7,pady=1)
#=========================================Scientific================================================
btnlog= Button(calc, text ="log", width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.log).grid(row=3 , column=4,pady=1)
btnExp= Button(calc, text ="Exp", width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.exp).grid(row=3 , column=5,pady=1)
btnMod= Button(calc, text ="Mod", width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = lambda : added_value.operation("mod")).grid(row=3 , column=6,pady=1)
btnE= Button(calc, text ="e",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.e).grid(row=3 , column=7,pady=1)
#=========================================Scientific================================================
btnlog2= Button(calc, text ="log2", width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.log2).grid(row=4 , column=4,pady=1)
btndeg= Button(calc, text ="deg",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.degrees).grid(row=4 , column=5,pady=1)
btnacosh= Button(calc, text ="acosh", width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.acosh).grid(row=4 , column=6,pady=1)
btnasinh= Button(calc, text ="asinh", width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.asinh).grid(row=4 , column=7,pady=1)
#=========================================Scientific================================================
btnlog10= Button(calc, text ="log10", width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.log10).grid(row=5 , column=4,pady=1)
btnlog1p= Button(calc, text ="deg1p", width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.log1p).grid(row=5 , column=5,pady=1)
btnexpml= Button(calc, text ="expml", width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.exmp1).grid(row=5 , column=6,pady=1)
btnlgamma= Button(calc, text ="lgamma",width=6,height=2,font=('arial',20,'bold'),bd=4,bg = "peach puff",
command = added_value.lgamma).grid(row=5 , column=7,pady=1)
lblDisplay = Label(calc, text="Scientific",font=('arial',30,'bold'),justify= CENTER)
lblDisplay.grid(row =0 , column =4,columnspan=4)
#======================================Menu and function===================================
def iExit():
iExit = tkinter.messagebox.askyesno("Scientific caculator","Confirm if you want to exit")
if iExit > 0:
root.destroy()
return
def Standard():
root.resizable(width =False, height=False)
root.geometry("480x568+0+0")
def Scientific():
root.resizable(width =False, height=False)
root.geometry("944x568+0+0")
def HelpView():
tkinter.messagebox.showinfo("Scientific caculator","Please refer windows calculator for more operation")
menubar = Menu(calc)
filemenu = Menu(menubar, tearoff =0)
menubar.add_cascade(label = "File", menu=filemenu)
filemenu.add_command(label = "Standard",command = Standard)
filemenu.add_command(label = "Scientific",command = Scientific)
filemenu.add_command(label = "Exit", command = iExit)
helpmenu = Menu(menubar, tearoff =0)
menubar.add_cascade(label = "Help", menu=helpmenu)
helpmenu.add_command(label = "View Help",command = HelpView)
root.configure(menu=menubar)
root.mainloop()
Hey man! Weird to find this blog but I wanted to get in touch with one of your twitter friends. If you read this, can you reach out to me at my twitter? Promise I'm not spamming and I'll respect your time.
ReplyDeletehttps://twitter.com/yahskAanaruhK