osdir.com


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

I need help with making my calculator


m using Python 3.4.2 
This is my code: 


from tkinter import* 

def iCalc(source, side): 
    storeObj= Frame(source, borderwidth= 1, bd= 4, bg="powder blue") 
    storeObj.pack(side=side, expand=YES, fill=BOTH) 
    return storeObj 

def button (source, side, text, command=None): 
    storeObj= Button(source, text=text, command=command) 
    storeObj.pack(side=side, expand=YES, fill=BOTH) 
    return storeObj 

class app(Frame): 
    def __init__(self): 
        Frame.__init__(self) 
        self.option_add('*Front', 'arial 20 bold') 
        self.pack(expand=YES, fill=BOTH) 
        self.master.title('Calculator') 

        display= StringVar() 
        Entry(self, relief=RIDGE, 
              textvariable=display, justify='right', bd=30, bg="powder blue").pack(side=TOP, expand=YES, 
                                                                                   fill=BOTH) 
        for clearBut in(["CE"], ["C"]): 
            erase = iCalc(self, TOP) 
            for ichar in clearBut: 
                button(erase, LEFT, ichar, 
                       lambda storeObj=display, q=ichar: storeObj.set('')) 

        for NumBut in ("789/", "456*", "123-", "0.+"): 
            FunctionNum = iCalc(self, TOP) 
            for iEquals in NumBut: 
                button(FunctionNum, LEFT, iEquals, 
                       lambda storeObj=display, q=iEquals: storeObj.set(storeObj.get() + q)) 

        EqualsButton=iCalc(self, TOP) 
        for iEquals in "=": 
            if iEquals == '=': 
                btniEquals= button(EqualsButton, LEFT, iEquals) 
                btniEquals.bind('<ButtonRelease-1>', 
                                lambda e, s=self, storeObj=display: s.calc(storeObj), '+') 
            else: 
                btniEquals= buton(EqualsButton, LEFT, iEquals, 
                                  lambda storeObj=display, s=' %s '%Equals: storeObj.set(storeObj.get()+s)) 
                                
      

def calc(self, display): 
    try: 
        display.set(eval(display.get())) 
    except: 
        display.set("Type an actual equation please!") 



if __name__ == '__main__': 
    app().mainloop()