Calculator Python Code

Python

import tkinter as tk

# Global expression
expression = ""

# Update input
def update_display(value):
    global expression
    # Convert symbols to valid Python ops
    if value == "×":
        expression += "*"
    elif value == "÷":
        expression += "/"
    else:
        expression += str(value)
    input_text.set(expression_display())

# Clear
def clear_display():
    global expression
    expression = ""
    input_text.set("")

# Backspace
def backspace():
    global expression
    expression = expression[:-1]
    input_text.set(expression_display())

# Show the expression with user-friendly symbols
def expression_display():
    return expression.replace("*", "×").replace("/", "÷")

# Evaluate
def calculate():
    global expression
    try:
        result = str(eval(expression))
        input_text.set(result)
        expression = result
    except:
        input_text.set("Error")
        expression = ""

# Handle keyboard
def key_event(event):
    key = event.keysym
    if key in "0123456789":
        update_display(key)
    elif key in ["plus", "KP_Add"]:
        update_display("+")
    elif key in ["minus", "KP_Subtract"]:
        update_display("-")
    elif key in ["asterisk", "KP_Multiply"]:
        update_display("×")
    elif key in ["slash", "KP_Divide"]:
        update_display("÷")
    elif key == "Return":
        calculate()
    elif key == "BackSpace":
        backspace()
    elif key == "Escape":
        clear_display()
    elif key == "period" or key == "KP_Decimal":
        update_display(".")

# Main window
root = tk.Tk()
root.title("Modern Calculator")
root.geometry("320x450")
root.configure(bg="#1e1e1e")
root.resizable(False, False)
root.bind("", key_event)

# Display
input_text = tk.StringVar()
entry = tk.Entry(
    root, textvariable=input_text,
    font=("Segoe UI", 22), bg="#2e2e2e", fg="#00ffcc",
    bd=0, relief=tk.FLAT, justify="right", insertbackground="#00ffcc"
)
entry.pack(expand=True, fill="both", padx=20, pady=(20, 10))

# Button frame
button_frame = tk.Frame(root, bg="#1e1e1e")
button_frame.pack(expand=True, fill="both", padx=10, pady=10)

# Button layout with ÷ and ×
buttons = [
    ["C", "←", "÷", "×"],
    ["7", "8", "9", "-"],
    ["4", "5", "6", "+"],
    ["1", "2", "3", "="],
    ["0", ".", "", ""]
]

# Create styled button
def create_button(text, command):
    if text == "":
        return tk.Label(button_frame, bg="#1e1e1e")
    return tk.Button(
        button_frame, text=text, command=command,
        font=("Segoe UI", 16), fg="#ffffff", bg="#333333",
        activebackground="#00ffcc", activeforeground="#1e1e1e",
        bd=0, relief=tk.FLAT, height=2, width=5
    )

# Place buttons
for r, row in enumerate(buttons):
    for c, char in enumerate(row):
        if char == "C":
            btn = create_button("C", clear_display)
        elif char == "←":
            btn = create_button("←", backspace)
        elif char == "=":
            btn = create_button("=", calculate)
        elif char:
            btn = create_button(char, lambda x=char: update_display(x))
        else:
            btn = create_button("", None)
        btn.grid(row=r, column=c, padx=5, pady=5)

# Run app
root.mainloop()
            
Responsive Design
Copy to Clipboard
Syntax Highlighted
Scrollable Code