import tkinter as tk
from tkinter import messagebox

class Calculator:
    def __init__(self, master):
        self.master = master
        self.master.title("Calculator")
        self.master.configure(bg="#000000")
        
        self.result_var = tk.StringVar()
        
        self.create_widgets()

    def create_widgets(self):
        self.result_entry = tk.Entry(self.master, textvariable=self.result_var, font=('Arial', 20), bd=5, insertwidth=4, width=15, justify='right', bg="#ffffff")
        self.result_entry.grid(row=0, column=0, columnspan=3, pady=10)

        buttons = [
            ('7', 1, 0), ('8', 1, 1), ('9', 1, 2), ('/', 1, 3),
            ('4', 2, 0), ('5', 2, 1), ('6', 2, 2), ('*', 2, 3),
            ('1', 3, 0), ('2', 3, 1), ('3', 3, 2), ('-', 3, 3),
            ('0', 4, 0), ('.', 4, 1), ('=', 4, 2), ('+', 4, 3),
            ('C', 5, 0),  # Clear button
        ]

        for (text, row, col) in buttons:
            if text in ['=', 'C']:
                bg_color = "#ffa500"  # Orange color for equals and clear buttons
            else:
                bg_color = "#008080"  # Teal color for other buttons
            button = tk.Button(self.master, text=text, font=('Arial', 18), padx=10, pady=10, command=lambda t=text: self.on_button_click(t), bg=bg_color)
            button.grid(row=row, column=col, padx=5, pady=5)

    def on_button_click(self, char):
        if char == '=':
            try:
                result = str(eval(self.result_var.get()))
                self.result_var.set(result)
            except:
                messagebox.showerror("Error", "Invalid expression")
        elif char == 'C':
            self.result_var.set("")  # Clear the entry field
        else:
            current_text = self.result_var.get()
            if current_text == '0' and char != '.':
                self.result_var.set(char)
            else:
                self.result_var.set(current_text + char)

def main():
    root = tk.Tk()
    calculator = Calculator(root)
    root.mainloop()

if __name__ == "__main__":
    main()