Skip to main content

Calculator App in Python Tkinter





from tkinter import *

def click(event):
    global sval
    text = event.widget.cget("text")
   
    if text =="=":
        if sval.get().isdigit():
            value = int(sval.get())
        else:
            try:
                value = eval(screen.get())
               
            except Exception as e:
                print(e)
                value = "Syntax error!"
        sval.set(value)
        screen.update()
   
   
    elif text == "C":
        sval.set("")
        screen.update()
       
    elif text == "D":
        sval.set(sval.get()[:-1])
        screen.update()
   
   
    else:
        sval.set(sval.get() + text)
        screen.update()
   
ak = Tk()
ak.geometry("305x500")
ak.title("Calculator")
ak.wm_iconbitmap("calculator.png")


sval = StringVar()
sval.set("")
screen = Entry(ak,textvar=sval,font="lucida 30")
screen.pack(fill=X,padx=10,pady=20)


m = Frame(ak)
f1 = Frame(m)
r = ['^','u','D','C']
for item in r:
    b = Button(f1,text=item,font="lucida 20 bold",padx=18,pady=10,bg="gray"
                                                               ,fg="white")
    b.pack(side=LEFT)
    b.bind('<Button-1>',click)
f1.pack()
f = Frame(m)
for i in range(7,10):
    b =Button(f,text=f"{i}",font="lucida 20 bold",padx=20,pady=10,bg="black"
                                                                ,fg="white")
    b.pack(side=LEFT)
    b.bind('<Button-1>',click)
x =Button(f,text="*",font="lucida 20 bold",padx=18,pady=10,bg="gray",fg="white")
x.pack(side=LEFT)
x.bind('<Button-1>',click)
f.pack()


f1= Frame(m)
for i in range(4,7):
    b =Button(f1,text=f"{i}",font="lucida 20 bold",padx=20,pady=10,bg="black"
                                                                ,fg="white")
    b.pack(side=LEFT)
    b.bind('<Button-1>',click)
x =Button(f1,text="-",font="lucida 20 bold",padx=20,pady=10,bg="gray"
                                                        ,fg="white")
x.pack(side=LEFT)
x.bind('<Button-1>',click)
f1.pack()

f2 = Frame(m)
for i in range(1,4):
    b =Button(f2,text=f"{i}",font="lucida 20 bold",padx=20,pady=10,bg="black"
                                                                    ,fg="white")
    b.pack(side=LEFT)
    b.bind('<Button-1>',click)
x =Button(f2,text="+",font="lucida 20 bold",padx=20,pady=10,bg="gray",fg="white")
x.pack(side=LEFT)
x.bind('<Button-1>',click)
f2.pack()  
 
sy = ['.','0','=']
f3 = Frame(m)
for i in sy:
    b =Button(f3,text=f"{i}",font="lucida 22 bold",padx=21,pady=10,bg="black"
                                                                ,fg="white")
    b.pack(side=LEFT)
    b.bind('<Button-1>',click)
x =Button(f3,text="/",font="lucida 20 bold",padx=20,pady=12,bg="gray"
                                                            ,fg="white")
x.pack(side=LEFT)
x.bind('<Button-1>',click)
f3.pack()

m.pack(anchor="sw",side=BOTTOM)

ak.mainloop()












Comments