import tkinter as tk

def evaluate_expression():
    try:
        result.set(eval(expression.get()))
    except Exception as e:
        result.set("Error")


root = tk.Tk()
root.title("آلة حاسبة")


expression = tk.StringVar()
result = tk.StringVar()


input_frame = tk.Frame(root)
input_frame.pack(side=tk.TOP, padx=10, pady=10)


entry = tk.Entry(input_frame, textvariable=expression, font=('Arial', 18, 'bold'), bd=10, insertwidth=4, width=15, justify='right')
entry.grid(row=0, column=0, columnspan=4)


output_label = tk.Label(input_frame, textvariable=result, font=('Arial', 18), bd=10, width=15, relief='sunken', justify='right')
output_label.grid(row=1, column=0, columnspan=4)


clear_button = tk.Button(input_frame, text='مسح', font=('Arial', 14), bd=5, padx=10, pady=10, command=lambda: expression.set(''))
clear_button.grid(row=2, column=0, columnspan=2)


equals_button = tk.Button(input_frame, text='=', font=('Arial', 14), bd=5, padx=10, pady=10, command=evaluate_expression)
equals_button.grid(row=2, column=2, columnspan=2)


buttons = [
    ('7', 0, 0), ('8', 0, 1), ('9', 0, 2), ('/', 0, 3),
    ('4', 1, 0), ('5', 1, 1), ('6', 1, 2), ('*', 1, 3),
    ('1', 2, 0), ('2', 2, 1), ('3', 2, 2), ('-', 2, 3),
    ('0', 3, 0), ('.', 3, 1), ('+', 3, 2), ('(', 3, 3),
]

for (text, row, col) in buttons:
    button = tk.Button(input_frame, text=text, font=('Arial', 14), bd=5, padx=10, pady=10, command=lambda t=text: expression.set(expression.get() + t))
    button.grid(row=row+3, column=col)


root.mainloop()
