综合练习:简易计算器

51.13 综合练习:简易计算器

Entry 显示、按钮 grid、eval 计算(仅练习;实际项目勿对不可信输入 eval)。

四则运算计算器

扩展:加退格键、打包成 exe 发给同学试用。

# ========================================
# 示例:简易计算器
# 说明:grid 布局 + StringVar;eval 仅练习用
# ========================================
import tkinter as tk

root = tk.Tk()
root.title('计算器')

expr = tk.StringVar(value='0')
display = tk.Entry(root, textvariable=expr, justify='right', font=('', 18))
display.grid(row=0, column=0, columnspan=4, sticky='ew', padx=5, pady=5)

def append(char):
    cur = expr.get()
    if cur == '0' and char not in '+-*/':
        expr.set(char)
    else:
        expr.set(cur + char)

def calc():
    try:
        expr.set(str(eval(expr.get())))
    except Exception:
        expr.set('错误')

def clear():
    expr.set('0')

# 4 行 4 列按钮
keys = [
    ('7', '8', '9', '/'),
    ('4', '5', '6', '*'),
    ('1', '2', '3', '-'),
    ('C', '0', '=', '+'),
]
for r, row in enumerate(keys, 1):
    for c, key in enumerate(row):
        if key == '=':
            cmd = calc
        elif key == 'C':
            cmd = clear
        else:
            cmd = lambda k=key: append(k)
        tk.Button(root, text=key, width=4, command=cmd).grid(row=r, column=c, padx=2, pady=2)

root.mainloop()