import tkinter as tk

# 创建主窗口
root = tk.Tk()
root.title("计算器")
root.resizable(False, False)

# 输入框
entry = tk.Entry(root, width=20, font=("Arial", 24), borderwidth=5, relief="ridge", justify="right")
entry.grid(row=0, column=0, columnspan=4, padx=10, pady=10)

# 点击按钮事件
def button_click(value):
    current = entry.get()
    entry.delete(0, tk.END)
    entry.insert(0, current + str(value))

# 清空
def clear():
    entry.delete(0, tk.END)

# 退格
def backspace():
    current = entry.get()
    entry.delete(0, tk.END)
    entry.insert(0, current[:-1])

# 计算结果
def calculate():
    try:
        result = eval(entry.get())
        entry.delete(0, tk.END)
        entry.insert(0, result)
    except Exception:
        entry.delete(0, tk.END)
        entry.insert(0, "错误")

# 按钮布局
buttons = [
    ('C', 1, 0, clear), ('←', 1, 1, backspace), ('(', 1, 2, lambda: button_click('(')), (')', 1, 3, lambda: button_click(')')),
    ('7', 2, 0, lambda: button_click(7)), ('8', 2, 1, lambda: button_click(8)), ('9', 2, 2, lambda: button_click(9)), ('/', 2, 3, lambda: button_click('/')),
    ('4', 3, 0, lambda: button_click(4)), ('5', 3, 1, lambda: button_click(5)), ('6', 3, 2, lambda: button_click(6)), ('*', 3, 3, lambda: button_click('*')),
    ('1', 4, 0, lambda: button_click(1)), ('2', 4, 1, lambda: button_click(2)), ('3', 4, 2, lambda: button_click(3)), ('-', 4, 3, lambda: button_click('-')),
    ('0', 5, 0, lambda: button_click(0)), ('.', 5, 1, lambda: button_click('.')), ('=', 5, 2, calculate), ('+', 5, 3, lambda: button_click('+'))
]

# 创建按钮
for (text, row, col, cmd) in buttons:
    tk.Button(
        root,
        text=text,
        width=5,
        height=2,
        font=("Arial", 14),
        command=cmd
    ).grid(row=row, column=col, padx=5, pady=5)

# 运行主循环
root.mainloop()