综合之前所学,实现一个简易计算器,提供加减乘除的功能。
要求:
– 使用图形用户界面,需有0-9、小数点、加减乘除、清除以及等于按钮
– 需有输入区和输出区
– 误输入后输出错误信息Infinity
import tkinter as tk
win = tk.Tk()
win.title('计算器')
# 输入输出框架
frame1 = tk.Frame(win)
frame1.pack()
# 按钮框架
frame2 = tk.Frame(win)
frame2.pack()
# 输入框
entry = tk.Entry(frame1, bg='#a8b5b8', font=('Helvetica', 15, 'bold'), bd=3)
entry.pack(fill='x')
# 结果输出
label = tk.Label(frame1, bg='#cbd2d3', font=('Helvetica', 15, 'bold'), anchor='e', text='计算结果')
label.pack(fill='x')
# 创建按钮函数
def btn(root, text, row, col, w, colspan, command):
button = tk.Button(root, text=text, width=w, command=command)
button.grid(row=row, column=col, padx=5, pady=5, columnspan=colspan)
def get_input(argu):
entry.insert('end', argu)
def clear():
entry.delete(0,'end')
label.config(text='')
def calc():
try:
input = entry.get()
output = eval(input)
entry.delete(0, 'end')
label.config(text=output)
except:
label.config(text='Infinity')
key = ['123+', '456-', '789*', '0./']
for x_index, x in enumerate(key):
for y_index, y in enumerate(x):
btn(frame2, y, x_index, y_index, 6, 1, command=lambda y=y: get_input(y))
btn(frame2, '清除', 3, 3, 6, 1, command=clear)
btn(frame2, '=', 5, 0, 20, 4, command=calc)
tk.mainloop()