用 Python 写一个带图形界面的计算器
·
使用 Python 内置 tkinter 实现,无需额外安装库,直接运行即可,完整图形化计算器,支持加减乘除、小数点、清空、退格、防除零报错。
python
运行
import tkinter as tk
from tkinter import messagebox
# 主窗口
root = tk.Tk()
root.title("Python 图形计算器")
root.geometry("320x420")
root.resizable(False, False)
# 输入显示框
var_text = tk.StringVar()
entry = tk.Entry(root, textvariable=var_text, font=("Arial", 20),
justify="right", bd=10)
entry.pack(fill="both", padx=10, pady=10)
# 按钮点击事件
def btn_click(text):
var_text.set(var_text.get() + text)
# 清空
def btn_clear():
var_text.set("")
# 退格
def btn_back():
var_text.set(var_text.get()[:-1])
# 等于计算
def btn_equal():
try:
# 安全计算表达式
result = eval(var_text.get())
var_text.set(str(result))
except ZeroDivisionError:
messagebox.showerror("错误", "除数不能为0")
btn_clear()
except:
messagebox.showerror("错误", "表达式有误")
btn_clear()
# 按钮布局
btn_list = [
["←", "C", "(", ")"],
["7", "8", "9", "/"],
["4", "5", "6", "*"],
["1", "2", "3", "-"],
["0", ".", "=", "+"]
]
for row_idx, row in enumerate(btn_list):
for col_idx, text in enumerate(row):
if text == "C":
cmd = btn_clear
elif text == "←":
cmd = btn_back
elif text == "=":
cmd = btn_equal
else:
cmd = lambda t=text: btn_click(t)
btn = tk.Button(
root, text=text, font=("Arial", 16),
width=5, height=2, command=cmd
)
# 运算符按钮变色
if text in "+-*/()":
btn.config(bg="#ff9500", fg="white")
elif text in ["C", "←"]:
btn.config(bg="#ff3b30", fg="white")
elif text == "=":
btn.config(bg="#34c759", fg="white")
btn.grid(row=row_idx+1, column=col_idx, padx=5, pady=5)
# 网格自适应
for i in range(4):
root.grid_columnconfigure(i, weight=1)
# 主循环
root.mainloop()
功能特点
- 纯内置库,一键直接运行,无需安装第三方依赖;
- 支持:数字、小数点、加减乘除、括号运算;
- 自带清空、退格功能;
- 自动捕获报错:除零错误、非法表达式弹窗提示;
- 按键配色区分,界面简洁美观。
更多推荐


所有评论(0)