用python写一个电子计算器支持“+”、“-”、“*”、“/”运算,还支持“回退”、“清空”与“退出”功能。要求使用tkinter实现如图所示的电子计算器。并对其代码附带注释
时间: 2023-10-01 10:05:40 浏览: 96
好的,以下是代码实现及注释:
```python
import tkinter as tk
# 定义计算器类
class Calculator:
def __init__(self, master):
self.master = master
self.master.title("电子计算器") # 设置计算器标题
self.master.resizable(0, 0) # 禁止调整窗口大小
self.result = "" # 计算结果字符串变量
# 创建显示结果的文本框
self.display = tk.Entry(master, font=("Arial", 16), width=20, justify="right")
self.display.grid(row=0, column=0, columnspan=4, padx=5, pady=5)
# 创建数字按钮
for num in range(10):
row = (9 - num) // 3 + 1 # 根据数字确定行数
column = (num - 1) % 3 # 根据数字确定列数
tk.Button(master, text=str(num), font=("Arial", 16), width=5, height=2, command=lambda n=num: self.input_number(n)).grid(row=row, column=column, padx=5, pady=5)
# 创建操作符按钮
tk.Button(master, text="+", font=("Arial", 16), width=5, height=2, command=lambda: self.input_operator("+")).grid(row=1, column=3, padx=5, pady=5)
tk.Button(master, text="-", font=("Arial", 16), width=5, height=2, command=lambda: self.input_operator("-")).grid(row=2, column=3, padx=5, pady=5)
tk.Button(master, text="*", font=("Arial", 16), width=5, height=2, command=lambda: self.input_operator("*")).grid(row=3, column=3, padx=5, pady=5)
tk.Button(master, text="/", font=("Arial", 16), width=5, height=2, command=lambda: self.input_operator("/")).grid(row=4, column=3, padx=5, pady=5)
# 创建其他按钮
tk.Button(master, text="=", font=("Arial", 16), width=5, height=2, command=self.calculate).grid(row=4, column=2, padx=5, pady=5)
tk.Button(master, text="清空", font=("Arial", 16), width=5, height=2, command=self.clear).grid(row=4, column=0, padx=5, pady=5)
tk.Button(master, text="回退", font=("Arial", 16), width=5, height=2, command=self.backspace).grid(row=4, column=1, padx=5, pady=5)
tk.Button(master, text="退出", font=("Arial", 16), width=5, height=2, command=master.quit).grid(row=5, column=0, columnspan=4, padx=5, pady=5)
# 输入数字
def input_number(self, num):
self.result += str(num)
self.display.delete(0, tk.END)
self.display.insert(0, self.result)
# 输入操作符
def input_operator(self, operator):
self.result += operator
self.display.delete(0, tk.END)
self.display.insert(0, self.result)
# 计算结果
def calculate(self):
try:
self.result = str(eval(self.result))
self.display.delete(0, tk.END)
self.display.insert(0, self.result)
except:
self.clear()
# 清空
def clear(self):
self.result = ""
self.display.delete(0, tk.END)
# 回退
def backspace(self):
self.result = self.result[:-1]
self.display.delete(0, tk.END)
self.display.insert(0, self.result)
# 创建主窗口并运行
root = tk.Tk()
calculator = Calculator(root)
root.mainloop()
```
该计算器支持数字、加减乘除运算,还有清空、回退和退出功能。可以在tkinter中创建文本框、数字按钮和操作符按钮。通过实现输入数字和操作符、计算结果、清空、回退等方法,使计算器具有完整的计算功能。