用eval tkinter grid 编计算器
时间: 2023-07-18 10:39:59 浏览: 39
好的,以下是一个使用`eval`函数和`Tkinter`库的计算器程序,它使用`grid`布局:
```python
import tkinter as tk
def evaluate(event):
# 获取计算式
expression = entry.get()
try:
# 计算结果
result = eval(expression)
# 显示结果
output.config(text="结果: " + str(result))
except:
# 显示错误信息
output.config(text="错误: 无效的计算式!")
# 创建窗口
window = tk.Tk()
window.title("计算器")
# 创建输入框和输出标签
entry = tk.Entry(window, width=40)
entry.grid(row=0, column=0, columnspan=4, padx=5, pady=5)
output = tk.Label(window, text="", font=("Arial", 12), fg="red")
output.grid(row=1, column=0, columnspan=4, padx=5, pady=5)
# 创建数字和操作符按钮
buttons = ["7", "8", "9", "/", "4", "5", "6", "*", "1", "2", "3", "-", "0", ".", "C", "+"]
for i, button in enumerate(buttons):
row = i // 4 + 2
column = i % 4
btn = tk.Button(window, text=button, width=8, height=3)
if button == "C":
btn.bind("<Button-1>", lambda event: entry.delete(0, tk.END))
else:
btn.bind("<Button-1>", lambda event, char=button: entry.insert(tk.END, char))
btn.grid(row=row, column=column, padx=5, pady=5)
# 创建等号按钮
equal_btn = tk.Button(window, text="=", width=8, height=3)
equal_btn.bind("<Button-1>", evaluate)
equal_btn.grid(row=6, column=2, padx=5, pady=5)
# 运行窗口
window.mainloop()
```
这个程序使用了一个`evaluate`函数,它在用户按下等号时被调用,获取输入框中的计算式并使用`eval`计算结果。如果计算式无效,那么程序会显示错误信息。
程序中的数字和操作符按钮都被创建为`Button`对象,并使用`lambda`表达式绑定它们的点击事件。对于数字按钮,它们会将对应的数字添加到输入框中;对于操作符按钮,它们会将对应的操作符添加到输入框中。特别地,清除按钮会清空输入框中的文本。
最后,等号按钮也被创建为一个`Button`对象,并使用`bind`方法绑定它的点击事件。当用户按下等号时,它会调用`evaluate`函数来计算结果。