Python Forum
i need help in fixing my scientific calculator coding : (, im using python 3.5.5
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
i need help in fixing my scientific calculator coding : (, im using python 3.5.5
#1
from tkinter import*
import math
import parser
import tkinter.messagebox

root = Tk()
root.title("La Scientific Calculator")
root.configure(background = "powder blue")
root.resizable(width =False, height=False)
root.geometry("480x568+0+0")

calc = Frame(root)
calc.grid()

self = "self"
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_fuction(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(txt.Display.get()))
        self.display(self.current)

    def squared(self):
        self.result = False
        self.current = math.sqrt (float(txt.Display.get()))
        self.display(self.current)


    def cos(self):
        self.result = False
        self.current = math.cos(math.radians(float(txt.Display.get())))
        self.display(self.current)
        
    def cosh(self):
        self.result = False
        self.current = math.cosh(math.radians(float(txt.Display.get())))
        self.display(self.current)

        
        
    def tan(self):
        self.result = False
        self.current = math.tan(math.radians(float(txt.Display.get())))
        self.display(self.current)

       
    def tanh(self):
        self.result = False
        self.current = math.tanh(math.radians(float(txt.Display.get())))
        self.display(self.current)
 
        
    def sin(self):
        self.result = False
        self.current = math.sinh(math.radians(float(txt.Display.get())))
        self.display(self.current)


        

        def sinh(self):
            self.result = False
            self.current = math.sinh(math.radians(float(txt.Display.get())))
            self.display(self.current)


        def log(self):
            self.result = False
            self.current = math.log(float(txt.Display.get()))
            self.display(self.current)

        
          
        def exp(self):
            self.result = False
            self.current = math.exp(math.radians(float(txt.Display.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 expml(self):
            self.result = False
            self.current = math.expml(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.degree(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="powder blue", bd=30, width=29, 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
#===========================================#==========================#==========================        
btnClear = Button(calc, text=chr(67), width=6, height=2, font=("arial",20,"bold"), bd=4,
                  bg="powder blue", command=added_value.Clear_Entry).grid(row=1,column=0, pady=1)

btnALLClear = Button(calc, text=chr(67)+ chr(69),width=6, height=2, font=("arial",20,"bold"), bd=4,
                  bg="powder blue",command=added_value.Clear_Entry).grid(row=1,column=1, pady=1)


btnSq = Button(calc, text="√", width=6, height=2, font=("arial",20,"bold"), bd=4,
                  bg="powder blue").grid(row=1,column=2, pady=1)

btnAdd = Button(calc, text="+", width=6, height=2, font=("arial",20,"bold"), bd=4,
                  bg="powder blue",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="powder blue",command = lambda: added_value.numberEnter("sub")).grid(row=2,column=3, pady=1)

btnMult = Button(calc, text="*", width=6, height=2, font=("arial",20,"bold"), bd=4,
                  bg="powder blue",command = lambda: added_value.numberEnter("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="powder blue",command = lambda: added_value.numberEnter("divide")).grid(row=4,column=3, pady=1)


btnZero = Button(calc, text="0", width=6, height=2, font=("arial",20,"bold"), bd=4,
          bg="powder blue",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="powder blue",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="powder blue").grid(row=5,column=2, pady=1)

btnEquals = Button(calc, text="=", width=6, height=2, font=("arial",20,"bold"), bd=4,
                  bg="powder blue", command = lambda : added_value.sum_of_total).grid(row=5,column=3, pady=1)

#========================Scientific Part======================================================


btnPi = Button(calc, text="n", width=6, height=2, font=("arial",20,"bold"), bd=4,
         bg="powder blue",command = lambda: 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="powder blue").grid(row=1,column=5, pady=1)

btntan = Button(calc, text="tan", width=6, height=2, font=("arial",20,"bold"), bd=4,
                  bg="powder blue").grid(row=1,column=6, pady=1)

btnsin = Button(calc, text="sin", width=6, height=2, font=("arial",20,"bold"), bd=4,
                  bg="powder blue").grid(row=1,column=7, pady=1)

#=====================================================================================================
btn2Pi = Button(calc, text="2n", width=6, height=2, font=("arial",20,"bold"), bd=4,
                  bg="powder blue",command = lambda: 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="powder blue").grid(row=2,column=5, pady=1)

btntanh = Button(calc, text="tanh", width=6, height=2, font=("arial",20,"bold"), bd=4,
                  bg="powder blue").grid(row=2,column=6, pady=1)


btnsinh = Button(calc, text="sinh", width=6, height=2, font=("arial",20,"bold"), bd=4,
                  bg="powder blue").grid(row=2,column=7, pady=1)

#===================================================================================================

btnlog = Button(calc, text="log", width=6, height=2, font=("arial",20,"bold"), bd=4,
                  bg="powder blue").grid(row=3,column=4, pady=1)

btnExp = Button(calc, text="Exp", width=6, height=2, font=("arial",20,"bold"), bd=4,
                  bg="powder blue").grid(row=3,column=5, pady=1)

btnMod = Button(calc, text="Mod", width=6, height=2, font=("arial",20,"bold"), bd=4,
                  bg="powder blue").grid(row=3,column=6, pady=1)

btnE = Button(calc, text="e", width=6, height=2, font=("arial",20,"bold"), bd=4,
                  bg="powder blue", command = added_value.e).grid(row=3,column=7, pady=1)

#=======================================Log Base 2========================================================================


btnlog2 = Button(calc, text="log2", width=6, height=2, font=("arial",20,"bold"), bd=4,
                  bg="powder blue").grid(row=4,column=4, pady=1)

btndeg= Button(calc, text="deg", width=6, height=2, font=("arial",20,"bold"), bd=4,
                  bg="powder blue").grid(row=4,column=5, pady=1)

btncosh= Button(calc, text="acosh", width=6, height=2, font=("arial",20,"bold"), bd=4,
                  bg="powder blue").grid(row=4,column=6, pady=1)

btnasinh = Button(calc, text="asinh", width=6, height=2, font=("arial",20,"bold"), bd=4,
                  bg="powder blue").grid(row=4,column=7, pady=1)

#========================================Log base 10==================================================================

btnlog10 = Button(calc, text="log10", width=6, height=2, font=("arial",20,"bold"), bd=4,
                  bg="powder blue").grid(row=5,column=4, pady=1)

btnCos = Button(calc, text="log1p", width=6, height=2, font=("arial",20,"bold"), bd=4,
                  bg="powder blue").grid(row=5,column=5, pady=1)

btnexpml = Button(calc, text="expml", width=6, height=2, font=("arial",20,"bold"), bd=4,
                  bg="powder blue").grid(row=5,column=6, pady=1)

btnlgamma = Button(calc, text="lgamma", width=6, height=2, font=("arial",20,"bold"), bd=4,
                  bg="powder blue").grid(row=5,column=7, pady=1)

lblDisplay = Label(calc, text="La Scientific Calculator", font=("arial",40, "bold"), justify=CENTER)
lblDisplay.grid(row = 0, column=4, columnspan =4)

#===========================================Menu and functions=============================================

def iExit():
        iExit = tkinter.messagebox.askyesno("La Scientific Calulator", "Confirm if you want to exit")
        if iExit > 0:
            root.destroy()
            return
            
def Scientific():
    root.resizable(width=False, height=False)
    root.geometry("944x568+0+0")

def Standard():
    root.resizable(width =False, height=False)
    root.geometry("480x568+0+0")


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_separator()
filemenu.add_command(label = "Exit", command = iExit)


editmenu = Menu(menubar, tearoff =0)
menubar.add_cascade(label = "Edit", menu=editmenu)
editmenu.add_command(label = "Cut")
editmenu.add_command(label = "Copy")
editmenu.add_separator()
editmenu.add_command(label = "Paste")

helpmenu = Menu(menubar, tearoff=0)
menubar.add_cascade(label = "Help", menu=helpmenu)
helpmenu.add_command(label = "View Help")


root.config(menu=menubar)
root.mainloop()
Reply


Messages In This Thread
i need help in fixing my scientific calculator coding : (, im using python 3.5.5 - by hans77 - Oct-17-2018, 01:49 AM

Possibly Related Threads…
Thread Author Replies Views Last Post
  fixing error TypeError: 'float' object is not subscriptable programmingirl 1 1,523 Jan-28-2023, 08:13 PM
Last Post: deanhystad
  Need help fixing Index Error adesimone 1 1,306 Nov-21-2022, 07:03 PM
Last Post: deanhystad
  Python calculator help but not using while loop with true, any flags variable ,break kirt6405 13 5,751 Jun-08-2021, 06:39 AM
Last Post: Larz60+
  Scientific Calculator Spacecowboy 5 3,885 Dec-04-2019, 09:36 PM
Last Post: Clunk_Head
  Fixing my backup function Beginner_coder123 4 3,026 Jun-15-2019, 07:56 PM
Last Post: Beginner_coder123
  Fixing arrays output in Python WLST script pkbash 2 3,993 Feb-28-2019, 06:20 PM
Last Post: pkbash
  Need help with fixing iteration counter Kapolt 8 4,678 Oct-18-2018, 07:56 PM
Last Post: buran
  python age calculator need to find the number of years before they turn 100 not using orangevalley 4 9,964 Mar-26-2018, 04:44 AM
Last Post: PyMan
  scientific numbers metalray 1 2,454 Feb-06-2018, 06:50 PM
Last Post: boring_accountant

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020