from tkinter import *
expr = "" # Global expression string
def press(key):
global expr
expr += str(key)
display.set(expr)
def equal():
global expr
try:
result = str(eval(expr))
display.set(result)
expr = ""
except:
display.set("error")
expr = ""
def clear():
global expr
expr = ""
display.set("")
if __name__ == "__main__":
root = Tk()
root.configure(bg="light green")
root.title("Simple Calculator")
root.geometry("270x150")
display = StringVar()
entry = Entry(root, textvariable=display)
entry.grid(columnspan=4, ipadx=70)
# Number buttons
btn1 = Button(root, text='1', fg='black', bg='red', command=lambda: press(1), height=1, width=7)
btn1.grid(row=2, column=0)
btn2 = Button(root, text='2', fg='black', bg='red', command=lambda: press(2), height=1, width=7)
btn2.grid(row=2, column=1)
btn3 = Button(root, text='3', fg='black', bg='red', command=lambda: press(3), height=1, width=7)
btn3.grid(row=2, column=2)
btn4 = Button(root, text='4', fg='black', bg='red', command=lambda: press(4), height=1, width=7)
btn4.grid(row=3, column=0)
btn5 = Button(root, text='5', fg='black', bg='red', command=lambda: press(5), height=1, width=7)
btn5.grid(row=3, column=1)
btn6 = Button(root, text='6', fg='black', bg='red', command=lambda: press(6), height=1, width=7)
btn6.grid(row=3, column=2)
btn7 = Button(root, text='7', fg='black', bg='red', command=lambda: press(7), height=1, width=7)
btn7.grid(row=4, column=0)
btn8 = Button(root, text='8', fg='black', bg='red', command=lambda: press(8), height=1, width=7)
btn8.grid(row=4, column=1)
btn9 = Button(root, text='9', fg='black', bg='red', command=lambda: press(9), height=1, width=7)
btn9.grid(row=4, column=2)
btn0 = Button(root, text='0', fg='black', bg='red', command=lambda: press(0), height=1, width=7)
btn0.grid(row=5, column=0)
# Operator buttons
plus = Button(root, text='+', fg='black', bg='red', command=lambda: press('+'), height=1, width=7)
plus.grid(row=2, column=3)
minus = Button(root, text='-', fg='black', bg='red', command=lambda: press('-'), height=1, width=7)
minus.grid(row=3, column=3)
mult = Button(root, text='*', fg='black', bg='red', command=lambda: press('*'), height=1, width=7)
mult.grid(row=4, column=3)
div = Button(root, text='/', fg='black', bg='red', command=lambda: press('/'), height=1, width=7)
div.grid(row=5, column=3)
# Other buttons
eq = Button(root, text='=', fg='black', bg='red', command=equal, height=1, width=7)
eq.grid(row=5, column=2)
clr = Button(root, text='Clear', fg='black', bg='red', command=clear, height=1, width=7)
clr.grid(row=5, column=1)
dot = Button(root, text='.', fg='black', bg='red', command=lambda: press('.'), height=1, width=7)
dot.grid(row=6, column=0)
root.mainloop()