Code:
import tkinter as tk
class ModernCalculator:
def _init_(self, root):
self.root = root
self.root.title("Modern Calculator")
self.root.geometry("350x550")
self.root.resizable(False, False)
self.root.config(bg="#2E2E2E") # Dark background
self.expression = ""
# Heading bar
heading_frame = tk.Frame(root, bg="#1C1C1E", height=60)
heading_frame.pack(fill="x")
heading = tk.Label(
heading_frame, text="🧮 Modern Calculator",
font=("Arial", 20, "bold"),
bg="#1C1C1E", fg="#34C759"
)
heading.pack(pady=10)
# Entry display
self.display_var = tk.StringVar()
self.display = tk.Entry(
root, textvariable=self.display_var,
font=("Arial", 24), bg="#3C3C3C", fg="white",
bd=0, justify="right", insertbackground="white"
)
self.display.pack(fill="both", ipadx=8, ipady=20, padx=10, pady=10)
# Buttons layout
btns_frame = tk.Frame(root, bg="#2E2E2E")
btns_frame.pack(expand=True, fill="both")
buttons = [
("C", "#FF5C5C"), ("(", "#4D4D4D"), (")", "#4D4D4D"), ("/", "#FF9500"),
("7", "#737373"), ("8", "#737373"), ("9", "#737373"), ("*", "#FF9500"),
("4", "#737373"), ("5", "#737373"), ("6", "#737373"), ("-", "#FF9500"),
("1", "#737373"), ("2", "#737373"), ("3", "#737373"), ("+", "#FF9500"),
("0", "#737373"), (".", "#737373"), ("←", "#4D4D4D"), ("=", "#34C759"),
]
# Place buttons in grid
for i, (text, color) in enumerate(buttons):
btn = tk.Button(
btns_frame, text=text, font=("Arial", 18, "bold"),
bg=color, fg="white", bd=0, relief="flat",
activebackground="#666", activeforeground="white",
command=lambda t=text: self.on_button_click(t)
)
btn.grid(row=i//4, column=i%4, sticky="nsew", padx=5, pady=5, ipadx=5, ipady=15)
# Grid responsiveness
for i in range(5):
btns_frame.grid_rowconfigure(i, weight=1)
for j in range(4):
btns_frame.grid_columnconfigure(j, weight=1)
def on_button_click(self, char):
if char == "C":
self.expression = ""
elif char == "←":
self.expression = self.expression[:-1]
elif char == "=":
try:
self.expression = str(eval(self.expression))
except:
self.expression = "Error"
else:
self.expression += str(char)
self.display_var.set(self.expression)
if _name_ == "_main_":
root = tk.Tk()
ModernCalculator(root)
root.mainloop()



0 Comments:
Post a Comment