实现GUI版的简易计算器
时间: 2024-02-03 19:11:49 浏览: 74
用GUI编写一个简易计算器
好的,我可以使用Python的Tkinter模块实现一个GUI版的简易计算器。以下是完整代码:
```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, padx=5, 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("C", 4, 2)
self.create_button("+", 4, 3)
self.create_button("=", 5, 0, columnspan=4)
def create_button(self, text, row, column, columnspan=1):
button = tk.Button(self.master, text=text, width=7, height=2, command=lambda: self.button_click(text))
button.grid(row=row, column=column, columnspan=columnspan, padx=5, pady=5)
def button_click(self, text):
if text == "=":
try:
result = eval(self.display.get())
self.display.delete(0, tk.END)
self.display.insert(0, result)
except:
self.display.delete(0, tk.END)
self.display.insert(0, "Error")
elif text == "C":
self.display.delete(0, tk.END)
else:
self.display.insert(tk.END, text)
root = tk.Tk()
calculator = Calculator(root)
root.mainloop()
```
在这个计算器中,我们创建了一个`Calculator`类,它继承自`tkinter.Frame`类。我们在`__init__`方法中创建了一个`Entry`对象作为显示屏,以及16个按钮。
对于每个按钮,我们使用`create_button`方法创建,该方法接受四个参数:按钮上的文本,按钮所在的行和列,以及按钮跨越的列数(默认为1)。我们为每个按钮设置了一个回调函数,当用户单击该按钮时,它将调用`button_click`方法。
在`button_click`方法中,我们根据用户单击的按钮执行相应的操作。如果按钮是数字或小数点,则我们将其添加到显示屏上。如果按钮是运算符,则我们将其添加到显示屏上,并在其两侧添加空格。如果按钮是“C”,则我们清除显示屏。如果按钮是“=”,则我们尝试将显示屏上的表达式求值,并在显示屏上显示结果。如果无法求值,则我们在显示屏上显示“Error”。
最后,我们在`main`函数中创建了一个`Tk`对象并运行主循环。在主循环中,我们创建了一个`Calculator`对象,并将其与`Tk`对象相关联。
阅读全文