如何制作计算器
import tkinter as tk
# 定义计算器类
class Calculator:
def __init__(self, root):
self.root = root
self.root.title('简易计算器')
# 初始化显示文本框
self.display_text = tk.StringVar()
self.display = tk.Entry(root, textvariable=self.display_text, justify='right', font=('Arial', 18))
self.display.grid(row=0, column=0, columnspan=4, sticky='nsew', ipady=10)
# 按钮布局
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),
('0', 4, 0), ('=', 4, 2), ('+', 4, 3), ('C', 4, 1)
]
self.buttons = {}
for (text, row, column) in buttons:
self.buttons[text] = tk.Button(root, text=text, font=('Arial', 18), command=lambda x=text: self.button_click(x))
self.buttons[text].grid(row=row, column=column)
# 运算逻辑
self.current_operator = None
self.previous_number = ""
self.current_number = ""
def button_click(self, text):
if text == 'C':
self.display_text.set('')
self.current_operator = None
self.previous_number = ""
self.current_number = ""
elif text in '0123456789':
self.current_number += text
self.display_text.set(self.current_number)
elif text == '=':
if self.current_operator:
self.compute()
else:
self.current_operator = text
self.previous_number = self.current_number
self.current_number = ""
def compute(self):
if self.previous_number and self.current_number and self.current_operator:
try:
result = eval(self.previous_number + self.current_operator + self.current_number)
self.display_text.set(str(result))
self.current_operator = None
self.previous_number = str(result)
self.current_number = ""
except:
self.display_text.set("Error")
# 创建主窗口
root = tk.Tk()
# 创建计算器实例
app = Calculator(root)
# 启动事件循环
root.mainloop()