用tkinter实现一个简单计算器,可以进行加、减乘、除四则运算,支持小数点,多次运算,由label和button构成,用grid布局,有除零错误提示
时间: 2024-04-01 09:33:42 浏览: 21
好的,我可以帮你实现一个简单的计算器。以下是实现的代码:
```python
import tkinter as tk
class Calculator:
def __init__(self, master):
self.master = master
self.master.title("Calculator")
# Label for displaying the current number
self.display = tk.Label(self.master, text="0", width=20, height=2, anchor="e", font=('Arial', 20))
self.display.grid(row=0, column=0, columnspan=4)
# Buttons for numbers and operators
self.buttons = [
"7", "8", "9", "+",
"4", "5", "6", "-",
"1", "2", "3", "*",
"0", ".", "C", "/"
]
# Create the buttons and place them in a grid layout
for i in range(len(self.buttons)):
row = i // 4 + 1
col = i % 4
button = tk.Button(self.master, text=self.buttons[i], width=5, height=2, font=('Arial', 16),
command=lambda value=self.buttons[i]: self.button_click(value))
button.grid(row=row, column=col)
def button_click(self, value):
if value == "C":
self.display.config(text="0")
elif value == "=":
try:
result = str(eval(self.display.cget("text")))
self.display.config(text=result)
except ZeroDivisionError:
self.display.config(text="Cannot divide by zero!")
else:
if self.display.cget("text") == "0":
self.display.config(text=value)
else:
self.display.config(text=self.display.cget("text") + value)
# Create the main window and run the calculator
root = tk.Tk()
app = Calculator(root)
root.mainloop()
```
这个计算器使用了Tkinter库,它提供了GUI界面的开发工具。我们使用了Label和Button两种组件,通过grid布局来排列它们的位置。在Calculator类中,我们定义了一个display标签,用于显示当前的数字,以及一个buttons数组,用于存储所有的数字和运算符。在初始化函数中,我们创建了标签和按钮,将它们放置在GUI中。
在button_click函数中,我们处理用户点击按钮的事件。如果用户点击了“C”按钮,我们将display标签的文本设置为0。如果用户点击了“=”按钮,我们使用eval函数计算表达式的结果,并将结果显示在display标签中。如果计算过程中出现了除以0的错误,我们将显示一个错误消息。如果用户点击了其他按钮,我们将新的数字或运算符显示在display标签中。
最后,我们创建了一个root窗口,并使用Calculator类来运行计算器。当用户点击“X”按钮退出程序时,主循环结束。
相关推荐
![text/x-java](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![xlsx](https://img-home.csdnimg.cn/images/20210720083732.png)