python实现tkinter简易计算器的实现
时间: 2023-10-31 18:05:38 浏览: 82
以下是一个简单的Tkinter计算器的实现示例:
```python
import tkinter as tk
class Calculator(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.pack()
self.create_widgets()
def create_widgets(self):
# 创建显示结果的标签
self.result_label = tk.Label(self, width=20, height=2, font=('Helvetica', 20), anchor='e')
self.result_label.grid(row=0, column=0, columnspan=4, padx=5, pady=5)
# 创建数字按钮
for i in range(1, 10):
row = (i - 1) // 3 + 1
col = (i - 1) % 3
button = tk.Button(self, text=str(i), width=6, height=3, font=('Helvetica', 20), command=lambda num=i: self.input_number(num))
button.grid(row=row, column=col, padx=5, pady=5)
# 创建0按钮
button = tk.Button(self, text='0', width=6, height=3, font=('Helvetica', 20), command=lambda: self.input_number(0))
button.grid(row=4, column=1, padx=5, pady=5)
# 创建运算符按钮
operators = ['+', '-', '*', '/', '=', 'C']
for i, op in enumerate(operators):
button = tk.Button(self, text=op, width=6, height=3, font=('Helvetica', 20), command=lambda operator=op: self.input_operator(operator))
button.grid(row=i+1, column=3, padx=5, pady=5)
def input_number(self, num):
self.result_label.config(text=self.result_label.cget('text') + str(num))
def input_operator(self, operator):
if operator == 'C':
self.result_label.config(text='')
elif operator == '=':
try:
result = eval(self.result_label.cget('text'))
self.result_label.config(text=str(result))
except ZeroDivisionError:
self.result_label.config(text='Error')
else:
self.result_label.config(text=self.result_label.cget('text') + ' ' + operator + ' ')
# 创建主窗口
root = tk.Tk()
root.title('Calculator')
root.geometry('300x400')
# 创建计算器对象
calculator = Calculator(master=root)
# 进入消息循环
calculator.mainloop()
```
该计算器实现了数字输入、加减乘除四则运算和清空操作,可以通过 eval 函数计算表达式的值。需要注意的是,eval 函数有一定的安全问题,因为它会直接执行字符串中的代码,因此在实际使用中需要特别小心。
阅读全文