综合练习:简易计算器
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()