综合之前所学,实现一个简易计算器,提供加减乘除的功能。

要求:
– 使用图形用户界面,需有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()

发表评论

电子邮件地址不会被公开。 必填项已用*标注