帮我做一个PYTHON采用面向对象的思想设计复杂计算器界面
时间: 2023-10-18 20:04:14 浏览: 29
好的,我可以为您提供一个基于Python和Tkinter库实现的面向对象的计算器界面示例代码,如下所示:
```python
import tkinter as tk
class Calculator:
def __init__(self, master):
self.master = master
self.master.title("Calculator")
self.result = tk.StringVar()
self.result.set("0")
self.entry = tk.Entry(self.master, width=25, font=('Arial', 16), textvariable=self.result, justify='right')
self.entry.grid(row=0, column=0, columnspan=4, padx=5, pady=5)
self.create_button("C", self.clear)
self.create_button("CE", self.clear_entry)
self.create_button("←", self.backspace)
self.create_button("÷", lambda: self.operation('/'))
self.create_button("7", lambda: self.digit('7'))
self.create_button("8", lambda: self.digit('8'))
self.create_button("9", lambda: self.digit('9'))
self.create_button("×", lambda: self.operation('*'))
self.create_button("4", lambda: self.digit('4'))
self.create_button("5", lambda: self.digit('5'))
self.create_button("6", lambda: self.digit('6'))
self.create_button("-", lambda: self.operation('-'))
self.create_button("1", lambda: self.digit('1'))
self.create_button("2", lambda: self.digit('2'))
self.create_button("3", lambda: self.digit('3'))
self.create_button("+", lambda: self.operation('+'))
self.create_button("±", self.negate)
self.create_button("0", lambda: self.digit('0'))
self.create_button(".", lambda: self.digit('.'))
self.create_button("=", self.calculate)
def create_button(self, text, command=None):
button = tk.Button(self.master, text=text, width=5, height=2, font=('Arial', 16), command=command)
button.grid(row=self.row, column=self.column)
self.column += 1
if self.column > 3:
self.column = 0
self.row += 1
def digit(self, num):
if self.result.get() == '0':
self.result.set(num)
else:
self.result.set(self.result.get() + num)
def clear(self):
self.result.set("0")
def clear_entry(self):
self.result.set("0")
def backspace(self):
self.result.set(self.result.get()[:-1])
def operation(self, op):
self.op = op
self.first_num = float(self.result.get())
self.result.set("0")
def calculate(self):
second_num = float(self.result.get())
if self.op == "+":
result = self.first_num + second_num
elif self.op == "-":
result = self.first_num - second_num
elif self.op == "*":
result = self.first_num * second_num
elif self.op == "/":
result = self.first_num / second_num
self.result.set(str(result))
def negate(self):
num = float(self.result.get())
self.result.set(str(-num))
if __name__ == '__main__':
root = tk.Tk()
app = Calculator(root)
root.mainloop()
```
该代码实现了一个简单的四则运算计算器,基于面向对象的思想设计实现,使用了Tkinter库创建图形用户界面,并通过类的方式组织代码。您可以根据自己的需求进行修改和扩展。