1. 项目背景与核心价值
记账这件事,说大不大说小不小。我见过太多人月初信誓旦旦要记账,结果不到一周就放弃——要么嫌手动输入太麻烦,要么被复杂的记账软件劝退。作为一个Python老手,我决定用Tkinter开发一个极简记账工具,核心目标就三点:操作必须比Excel快、数据要能可视化、完全适配国人记账习惯。
市面上现成的MoneyWiz、随手记虽然功能强大,但总有些用不顺手的地方。比如餐饮消费要手动归到"食品"大类,打车费得选"交通-市内交通-出租车"三级分类...我们的解决方案是:通过智能关键词识别(比如"火锅"自动归为餐饮,"滴滴"自动算交通)+ 高频消费一键记账,把单次记账时间控制在3秒内。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术选型与架构设计
2.1 为什么选择Tkinter
相比PyQt5和Kivy,Tkinter有三大优势:
- 零依赖:Python标准库自带,用户不用折腾环境配置
- 轻量化:打包后的exe文件可以控制在10MB以内
- 开发快:对于表单类应用,用Tkinter的网格布局比Qt的信号槽更直观
实测数据对比:
| 框架 | 打包体积 | 冷启动时间 | 内存占用 |
|---|---|---|---|
| Tkinter | 8.7MB | 0.8s | 45MB |
| PyQt5 | 32MB | 1.5s | 80MB |
| PySide6 | 28MB | 1.2s | 75MB |
2.2 数据存储方案
放弃SQLite选择JSON存储的考量:
- 记账数据量小(单人年记录约1000条)
- JSON便于直接读写和备份
- 可以用Python内置的json模块处理
数据结构设计示例:
python复制{
"2023-07-15": [
{
"time": "12:30",
"type": "支出",
"amount": 38.0,
"category": "餐饮",
"remark": "公司楼下牛肉面"
}
]
}
关键技巧:采用日期作为主键的字
