帮我做一个PYTHON采用面向对象的思想设计复杂计算器界面
时间: 2023-10-18 07:04:14 浏览: 38
好的,我可以为您提供一个基本的代码框架。这个计算器可以进行加、减、乘、除等基本的数学运算。您可以根据自己的需要进行修改和扩展。
```python
import tkinter as tk
class Calculator:
def __init__(self, master):
self.master = master
master.title("Calculator")
# 创建显示器
self.display = tk.Entry(master, width=30, justify="right")
self.display.grid(row=0, column=0, columnspan=4)
# 创建数字按钮
for i in range(10):
button = tk.Button(master, text=str(i), command=lambda i=i: self.button_click(str(i)))
button.grid(row=3 - i // 3, column=i % 3)
# 创建运算符按钮
buttons = ["+", "-", "*", "/", "=", "C"]
for i, symbol in enumerate(buttons):
button = tk.Button(master, text=symbol, command=lambda symbol=symbol: self.button_click(symbol))
button.grid(row=i + 1, column=3)
# 初始化状态
self.reset()
def reset(self):
self.current_value = 0
self.operator = None
self.need_clear = False
def button_click(self, symbol):
if symbol.isdigit():
if self.need_clear:
self.display.delete(0, tk.END)
self.need_clear = False
self.display.insert(tk.END, symbol)
elif symbol in ["+", "-", "*", "/"]:
self.operator = symbol
self.current_value = int(self.display.get())
self.need_clear = True
elif symbol == "=":
if self.operator == "+":
result = self.current_value + int(self.display.get())
elif self.operator == "-":
result = self.current_value - int(self.display.get())
elif self.operator == "*":
result = self.current_value * int(self.display.get())
elif self.operator == "/":
result = self.current_value / int(self.display.get())
self.display.delete(0, tk.END)
self.display.insert(tk.END, str(result))
self.reset()
elif symbol == "C":
self.display.delete(0, tk.END)
self.reset()
root = tk.Tk()
calculator = Calculator(root)
root.mainloop()
```
这个代码使用了Tkinter库来创建图形用户界面,并使用面向对象的思想将计算器的各个组件封装成Calculator类。在这个类中定义了各种方法来响应用户的输入和计算结果。您可以根据需要进行修改和扩展。
相关推荐
![py](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)