import tkinter as tk

class Calculator:
    def __init__(self, root):
        self.root = root
        self.root.title("计算器")

        # 定义显示框
        self.expression = ""
        self.input_var = tk.StringVar()

        # 创建输入框
        input_frame = tk.Frame(self.root)
        input_frame.pack()

        input_field = tk.Entry(input_frame, textvariable=self.input_var, font=("Arial", 20), justify='right')
        input_field.grid(row=0, column=0, ipady=10, padx=10)
        input_field.pack()

        # 创建按钮框
        button_frame = tk.Frame(self.root)
        button_frame.pack()

        buttons = [
            '7', '8', '9', '/',
            '4', '5', '6', '*',
            '1', '2', '3', '-',
            '0', 'C', '=', '+'
        ]

        # 添加按钮
        row_val = 0
        col_val = 0

        for button in buttons:
            action = lambda x=button: self.on_button_click(x)
            button_widget = tk.Button(button_frame, text=button, width=5, height=2, font=("Arial", 18), command=action)
            button_widget.grid(row=row_val, column=col_val)

            col_val += 1
            if col_val > 3:
                col_val = 0
                row_val += 1

    def on_button_click(self, button):
        if button == "C":
            self.expression = ""
        elif button == "=":
            try:
                self.expression = str(eval(self.expression))
            except Exception:
                self.expression = "错误"
        else:
            self.expression += button

        self.input_var.set(self.expression)


if __name__ == "__main__":
    root = tk.Tk()
    calculator = Calculator(root)
    root.mainloop()