Untitled
import tkinter as tk from tkinter import messagebox class CalculatorApp: def __init__(self, root): self.root = root self.root.title("Calculator") self.root.geometry("300x400") self.root.resizable(False, False) self.expression = "" self.display = tk.Entry(root, font=("Arial", 20), bd=10, insertwidth=2, width=14, borderwidth=4, justify="right") self.display.grid(row=0, column=0, columnspan=4) self.create_buttons() def press(self, key): if key == "C": self.expression = "" elif key == "=": try: self.expression = str(eval(self.expression)) except Exception as e: messagebox.showerror("Error", "Invalid Input") self.expression = "" else: self.expression += str(key) self.update_display() def update_display(self): self.display.delete(0, tk.END) self.display.insert(0, self.expression) def create_buttons(self): 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), ('C', 4, 0), ('0', 4, 1), ('=', 4, 2), ('+', 4, 3), ] for (text, row, col) in buttons: button = tk.Button( self.root, text=text, padx=20, pady=20, font=("Arial", 14), command=lambda t=text: self.press(t) ) button.grid(row=row, column=col, sticky="nsew") if __name__ == "__main__": root = tk.Tk() app = CalculatorApp(root) root.mainloop()
Leave a Comment