I am trying to create a calculator GUI but the get()
and update()
are not working. It throws an AttributeError: 'NoneType' object has no attribute 'get'/'update'
. I didn't found the solution to this problem on youtube or Google. There is no problem with the loop. Everything works fine except the get()
and update()
.
from tkinter import *
def click(event):
global entryvar
text=event.widget.cget("text")
if text=="=":
if entryvar.get().isdigit():
value=int(entryvar.get())
else:
value=eval(screen.get())
entryvar.set(value)
screen.update()
elif text=="C":
entryvar.set("")
screen.update()
else:
entryvar.set(entryvar.get()+text)
screen.update()
root=Tk()
root.geometry("450x600")
entryvar=StringVar()
root.title("Basic Calculator")
screen=Entry(root,textvar=entryvar,font="lucida 24 bold").pack(fill=X,ipady=25)
row1=Frame(root,bg="gray")
but=Button(row1,text="9",font="lucida 24 bold")
but.pack(side=LEFT,padx=2,pady=2,ipadx=20,ipady=20)
but.bind("<Button-1>",click)
but=Button(row1,text="8",font="lucida 24 bold")
but.pack(side=LEFT,padx=2,pady=2,ipadx=20,ipady=20)
but.bind("<Button-1>",click)
but=Button(row1,text="7",font="lucida 24 bold")
but.pack(side=LEFT,padx=2,pady=2,ipadx=20,ipady=20)
but.bind("<Button-1>",click)
row1.pack()
row2=Frame(root,bg="gray")
but=Button(row2,text="6",font="lucida 24 bold")
but.pack(side=LEFT,padx=2,pady=2,ipadx=20,ipady=20)
but.bind("<Button-1>",click)
but=Button(row2,text="5",font="lucida 24 bold")
but.pack(side=LEFT,padx=2,pady=2,ipadx=20,ipady=20)
but.bind("<Button-1>",click)
but=Button(row2,text="4",font="lucida 24 bold")
but.pack(side=LEFT,padx=2,pady=2,ipadx=20,ipady=20)
but.bind("<Button-1>",click)
row2.pack()
row3=Frame(root,bg="gray")
but=Button(row3,text="3",font="lucida 24 bold")
but.pack(side=LEFT,padx=2,pady=2,ipadx=20,ipady=20)
but.bind("<Button-1>",click)
but=Button(row3,text="2",font="lucida 24 bold")
but.pack(side=LEFT,padx=2,pady=2,ipadx=20,ipady=20)
but.bind("<Button-1>",click)
but=Button(row3,text="1",font="lucida 24 bold")
but.pack(side=LEFT,padx=2,pady=2,ipadx=20,ipady=20)
but.bind("<Button-1>",click)
row3.pack()
row4=Frame(root,bg="gray")
but=Button(row4,text="+",font="lucida 24 bold")
but.pack(side=LEFT,padx=2,pady=2,ipadx=20,ipady=20)
but.bind("<Button-1>",click)
but=Button(row4,text="0",font="lucida 24 bold")
but.pack(side=LEFT,padx=2,pady=2,ipadx=20,ipady=20)
but.bind("<Button-1>",click)
but=Button(row4,text="-",font="lucida 24 bold")
but.pack(side=LEFT,padx=4,pady=2,ipadx=21,ipady=20)
but.bind("<Button-1>",click)
row4.pack()
row5=Frame(root,bg="gray")
but=Button(row5,text="*",font="lucida 24 bold")
but.pack(side=LEFT,padx=2,pady=2,ipadx=20,ipady=20)
but.bind("<Button-1>",click)
but=Button(row5,text="=",font="lucida 24 bold")
but.pack(side=LEFT,padx=2,pady=2,ipadx=20,ipady=20)
but.bind("<Button-1>",click)
but=Button(row5,text="/",font="lucida 24 bold")
but.pack(side=LEFT,padx=2,pady=2,ipadx=20,ipady=20)
but.bind("<Button-1>",click)
row5.pack()
root.mainloop()