import tkinter as tk

def evaluate_expression():
    try:
        result = eval(entry.get())
        output_label.config(text="Result: " + str(result))
    except Exception as e:
        output_label.config(text="Error: " + str(e))

def clear_input():
    entry.delete(0, tk.END)
    output_label.config(text="")

def delete_last_character():
    current_text = entry.get()
    if current_text:
        entry.delete(len(current_text) - 1)

# Create the main window
root = tk.Tk()
root.title("Calculator")
root.configure(bg="#f0f0f0")

# Create an entry widget for user input
entry = tk.Entry(root, width=30, font=('Arial', 14))
entry.grid(row=0, column=0, columnspan=4, padx=10, pady=10)

# Create buttons for digits and operations
buttons = [
    ('7', 'gray'), ('8', 'gray'), ('9', 'gray'),
    ('4', 'gray'), ('5', 'gray'), ('6', 'gray'),
    ('1', 'gray'), ('2', 'gray'), ('3', 'gray'),
    ('.', 'gray'), ('0', 'gray')
]

row = 1
col = 0
for button_text, color in buttons:
    tk.Button(root, text=button_text, width=5, font=('Arial', 14), bg=color, fg='white',
              command=lambda b=button_text: entry.insert(tk.END, b)).grid(row=row, column=col, padx=5, pady=5)
    col += 1
    if col > 2:
        col = 0
        row += 1

# Create operation buttons
operations = [
    ('/', 'blue'), ('*', 'blue'),
    ('-', 'blue'), ('+', 'blue')
]

row = 1
col = 3
for button_text, color in operations:
    tk.Button(root, text=button_text, width=5, font=('Arial', 14), bg=color, fg='white',
              command=lambda b=button_text: entry.insert(tk.END, b)).grid(row=row, column=col, padx=5, pady=5)
    row += 1

# Create a button to evaluate the expression
equal_button = tk.Button(root, text="=", width=10, font=('Arial', 14), bg='green', fg='white', command=evaluate_expression)
equal_button.grid(row=4, column=3, columnspan=1, padx=5, pady=5)

# Create a button to clear the input field
clear_button = tk.Button(root, text="Clr", width=10, font=('Arial', 14), bg='red', fg='white', command=clear_input)
clear_button.grid(row=2, column=4, columnspan=1, padx=5, pady=5)

# Create a button to delete the last character
delete_button = tk.Button(root, text="Del", width=10, font=('Arial', 14), bg='orange', fg='white', command=delete_last_character)
delete_button.grid(row=3, column=4, columnspan=1, padx=5, pady=5)

# Create a label to display the result or error message
output_label = tk.Label(root, text="", fg="red", font=('Arial', 14), bg="#f0f0f0")
output_label.grid(row=5, column=0, columnspan=4, padx=5, pady=5)

root.mainloop()
