from tkinter import *
import math

def calculate():
    try:
        result = eval(entry.get())
        entry.delete(0, END)
        entry.insert(END, str(result))
    except:
        entry.delete(0, END)
        entry.insert(END, "تعبير حسابي غير صالح")

 
window = Tk()
window.title("آلة حاسبة")
window.configure(bg='lightgrey')

entry = Entry(window, width=30)
entry.grid(row=0, column=0, columnspan=4)

buttons = [
    '7', '8', '9', '/',
    '4', '5', '6', '*',
    '1', '2', '3', '-',
    '.', '0', '=', '+',
    'sqrt', '**', '%'
]

row_val = 1
col_val = 0

button_color = 'lightblue'
for button in buttons:
    if button == 'sqrt':
        Button(window, text=button, width=5, command=lambda: entry.insert(END, 'math.sqrt('), bg=button_color).grid(row=row_val, column=col_val)
    elif button == '**':
        Button(window, text=button, width=5, command=lambda: entry.insert(END, '**'), bg=button_color).grid(row=row_val, column=col_val)
    elif button == '%':
        Button(window, text=button, width=5, command=lambda: entry.insert(END, '/100'), bg=button_color).grid(row=row_val, column=col_val)
    else:
        Button(window, text=button, width=5, command=lambda button=button: entry.insert(END, button), bg=button_color).grid(row=row_val, column=col_val)
    col_val += 1
    if col_val > 3:
        col_val = 0
        row_val += 1

Button(window, text='C', width=5, command=lambda: entry.delete(0, END), bg='red').grid(row=row_val, column=col_val)
Button(window, text='=', width=5, command=calculate, bg='green').grid(row=row_val, column=col_val + 1)

window.mainloop()
