import tkinter as tk class Calculator: def __init__(self, root): self.root = root self.root.title("Calculator") self.expression = "" # Create display field self.display = tk.Entry(root, font=("Arial", 20), bd=10, insertwidth=2, width=14, borderwidth=4, bg="lightgrey") self.display.grid(row=0, column=0, columnspan=4, pady=10) # Create buttons buttons = [ '7', '8', '9', '+', '4', '5', '6', '-', '1', '2', '3', '=', 'C', '0' ] row_val = 1 col_val = 0 for button in buttons: if button == "=": tk.Button(root, text=button, padx=20, pady=20, font=("Arial", 18), command=self.calculate).grid(row=row_val, column=col_val, columnspan=2, pady=5) col_val += 2 elif button == "C": tk.Button(root, text=button, padx=20, pady=20, font=("Arial", 18), command=lambda b=button: self.on_button_click(b)).grid(row=row_val + 1, column=0, pady=5) elif button == "0": tk.Button(root, text=button, padx=20, pady=20, font=("Arial", 18), command=lambda b=button: self.on_button_click(b)).grid(row=row_val + 1, column=1, pady=5) col_val += 1 if col_val > 3: col_val = 0 row_val += 1 else: tk.Button(root, text=button, padx=20, pady=20, font=("Arial", 18), command=lambda b=button: self.on_button_click(b)).grid(row=row_val, column=col_val, pady=5) col_val += 1 if col_val > 3: col_val = 0 row_val += 1 def on_button_click(self, char): if char == "C": self.expression = "" else: self.expression += str(char) self.display.delete(0, tk.END) self.display.insert(tk.END, self.expression) def calculate(self): try: result = str(eval(self.expression)) self.display.delete(0, tk.END) self.display.insert(tk.END, result) self.expression = result except: self.display.delete(0, tk.END) self.display.insert(tk.END, "Error") self.expression = "" if __name__ == "__main__": root = tk.Tk() calc = Calculator(root) root.mainloop()