用tkinter实现一个简单计算器,可以进行加、减乘、除四则运算,支持小数点,多次运算,由label和button构成,用grid布局,有除零错误提示
时间: 2024-03-23 09:44:09 浏览: 31
好的,以下是用tkinter实现一个简单计算器的代码:
```python
import tkinter as tk
class Calculator:
def __init__(self, master):
self.master = master
master.title("简单计算器")
master.resizable(False, False)
self.expression = ""
self.result = ""
self.label = tk.Label(master, text="0", width=20, height=2, font=("Arial", 20))
self.label.grid(row=0, column=0, columnspan=4)
self.button_clear = tk.Button(master, text="C", width=5, height=2, font=("Arial", 16), command=self.clear)
self.button_clear.grid(row=1, column=0)
self.button_divide = tk.Button(master, text="/", width=5, height=2, font=("Arial", 16), command=lambda: self.add_operator("/"))
self.button_divide.grid(row=1, column=1)
self.button_multiply = tk.Button(master, text="*", width=5, height=2, font=("Arial", 16), command=lambda: self.add_operator("*"))
self.button_multiply.grid(row=1, column=2)
self.button_minus = tk.Button(master, text="-", width=5, height=2, font=("Arial", 16), command=lambda: self.add_operator("-"))
self.button_minus.grid(row=1, column=3)
self.button_7 = tk.Button(master, text="7", width=5, height=2, font=("Arial", 16), command=lambda: self.add_digit("7"))
self.button_7.grid(row=2, column=0)
self.button_8 = tk.Button(master, text="8", width=5, height=2, font=("Arial", 16), command=lambda: self.add_digit("8"))
self.button_8.grid(row=2, column=1)
self.button_9 = tk.Button(master, text="9", width=5, height=2, font=("Arial", 16), command=lambda: self.add_digit("9"))
self.button_9.grid(row=2, column=2)
self.button_plus = tk.Button(master, text="+", width=5, height=2, font=("Arial", 16), command=lambda: self.add_operator("+"))
self.button_plus.grid(row=2, column=3)
self.button_4 = tk.Button(master, text="4", width=5, height=2, font=("Arial", 16), command=lambda: self.add_digit("4"))
self.button_4.grid(row=3, column=0)
self.button_5 = tk.Button(master, text="5", width=5, height=2, font=("Arial", 16), command=lambda: self.add_digit("5"))
self.button_5.grid(row=3, column=1)
self.button_6 = tk.Button(master, text="6", width=5, height=2, font=("Arial", 16), command=lambda: self.add_digit("6"))
self.button_6.grid(row=3, column=2)
self.button_equal = tk.Button(master, text="=", width=5, height=2, font=("Arial", 16), command=self.calculate)
self.button_equal.grid(row=3, column=3, rowspan=2)
self.button_1 = tk.Button(master, text="1", width=5, height=2, font=("Arial", 16), command=lambda: self.add_digit("1"))
self.button_1.grid(row=4, column=0)
self.button_2 = tk.Button(master, text="2", width=5, height=2, font=("Arial", 16), command=lambda: self.add_digit("2"))
self.button_2.grid(row=4, column=1)
self.button_3 = tk.Button(master, text="3", width=5, height=2, font=("Arial", 16), command=lambda: self.add_digit("3"))
self.button_3.grid(row=4, column=2)
self.button_dot = tk.Button(master, text=".", width=5, height=2, font=("Arial", 16), command=lambda: self.add_digit("."))
self.button_dot.grid(row=5, column=0)
self.button_0 = tk.Button(master, text="0", width=5, height=2, font=("Arial", 16), command=lambda: self.add_digit("0"))
self.button_0.grid(row=5, column=1)
def clear(self):
self.expression = ""
self.result = ""
self.update_label()
def add_digit(self, digit):
self.expression += digit
self.update_label()
def add_operator(self, operator):
if self.expression and self.expression[-1] not in "+-*/":
self.expression += operator
self.update_label()
def calculate(self):
try:
self.result = str(eval(self.expression))
self.update_label()
except ZeroDivisionError:
self.result = "错误"
self.update_label()
def update_label(self):
self.label.config(text=self.result if self.result else self.expression)
if __name__ == "__main__":
root = tk.Tk()
calculator = Calculator(root)
root.mainloop()
```
这个计算器支持加、减、乘、除四则运算,支持小数点,支持多次运算,而且用了grid布局,比较美观。如果除数为0,会提示“错误”。