请大家用窗体完成加、减、乘、除等计算器功能的程序,其他功能可以继续扩展;
时间: 2023-07-10 11:33:27 浏览: 32
好的,我可以帮您实现一个基本的计算器程序,您可以在窗体中输入数字和操作符,然后点击“=”按钮得到计算结果。以下是示例代码:
```python
import tkinter as tk
# 定义计算器窗口
class Calculator:
def __init__(self, master):
self.master = master
self.master.title("Calculator")
# 创建输入框
self.entry = tk.Entry(self.master, width=30)
self.entry.grid(row=0, column=0, columnspan=4, pady=5)
# 创建按钮
self.create_button("7", 1, 0)
self.create_button("8", 1, 1)
self.create_button("9", 1, 2)
self.create_button("/", 1, 3)
self.create_button("4", 2, 0)
self.create_button("5", 2, 1)
self.create_button("6", 2, 2)
self.create_button("*", 2, 3)
self.create_button("1", 3, 0)
self.create_button("2", 3, 1)
self.create_button("3", 3, 2)
self.create_button("-", 3, 3)
self.create_button("0", 4, 0)
self.create_button(".", 4, 1)
self.create_button("=", 4, 2)
self.create_button("+", 4, 3)
self.create_button("C", 5, 0)
self.create_button("(", 5, 1)
self.create_button(")", 5, 2)
self.create_button("←", 5, 3)
# 创建按钮并绑定事件
def create_button(self, text, row, column):
button = tk.Button(self.master, text=text, width=7, height=2)
button.grid(row=row, column=column, padx=2, pady=2)
if text.isdigit():
button.bind("<Button-1>", self.input_number)
elif text == ".":
button.bind("<Button-1>", self.input_dot)
elif text == "=":
button.bind("<Button-1>", self.calculate)
elif text == "C":
button.bind("<Button-1>", self.clear)
elif text == "←":
button.bind("<Button-1>", self.backspace)
else:
button.bind("<Button-1>", self.input_operator)
# 输入数字
def input_number(self, event):
self.entry.insert(tk.END, event.widget["text"])
# 输入小数点
def input_dot(self, event):
if "." not in self.entry.get():
self.entry.insert(tk.END, ".")
# 输入操作符
def input_operator(self, event):
self.entry.insert(tk.END, " " + event.widget["text"] + " ")
# 计算结果
def calculate(self, event):
try:
result = eval(self.entry.get())
self.entry.delete(0, tk.END)
self.entry.insert(tk.END, result)
except ZeroDivisionError:
self.entry.delete(0, tk.END)
self.entry.insert(tk.END, "Error: cannot divide by zero")
# 清除输入框
def clear(self, event):
self.entry.delete(0, tk.END)
# 删除最后一个字符
def backspace(self, event):
text = self.entry.get()[:-1]
self.entry.delete(0, tk.END)
self.entry.insert(tk.END, text)
# 启动程序
if __name__ == "__main__":
root = tk.Tk()
app = Calculator(root)
root.mainloop()
```
这个程序实现了基本的加、减、乘、除运算,以及清空输入框、删除最后一个字符等功能。您可以根据需要自行扩展。