Demo地址:https://gitcode.com/rmbnetlife/todo-app-pyqt.git
PyQt Todo 应用
一个使用 PyQt5 开发的现代化任务管理应用,帮助您高效管理日常任务和待办事项。
📋 应用简介
这是一个功能完整的桌面任务管理应用,具有直观的图形用户界面,支持任务的增删改查、优先级管理、状态筛选等功能。所有数据都保存在本地,确保您的隐私安全。
✨ 主要特性
- 🎯 简洁直观:现代化的用户界面,操作简单易懂
- 📝 完整的任务管理:添加、编辑、删除、完成任务
- 🏷️ 优先级管理:支持高、中、低三个优先级,用颜色区分
- 🔍 智能筛选:按状态和优先级筛选任务
- 💾 数据持久化:自动保存到本地文件,支持数据备份
- 📊 实时统计:状态栏显示任务统计信息
- ⚡ 响应迅速:基于 PyQt5,性能优异
🚀 快速开始
环境要求
- Python 3.7 或更高版本
- Windows/macOS/Linux 操作系统
安装步骤
-
克隆项目
git clone https://gitcode.com/rmbnetlife/todo-app-pyqt.git cd todo-app-pyqt
-
创建虚拟环境
方法一:使用 uv(推荐)
# 安装 uv(如果尚未安装) pip install uv# 创建虚拟环境 uv venv venv# 激活虚拟环境 # Windows: venv\Scripts\activate # macOS/Linux: source venv/bin/activate
方法二:使用 Python 内置 venv
# 创建虚拟环境 python -m venv venv# 激活虚拟环境 # Windows: venv\Scripts\activate # macOS/Linux: source venv/bin/activate
-
安装依赖
使用 uv(推荐)
uv pip install -r requirements.txt
使用 pip
pip install -r requirements.txt
-
运行应用
使用 uv
uv run python main.py
使用 Python
python main.py
-
运行演示脚本(可选)
# 使用 uv uv run python demo.py# 使用 Python python demo.py
首次使用
- 启动应用后,您会看到一个空的任务列表
- 点击「添加任务」按钮创建您的第一个任务
- 填写任务标题、描述(可选)和优先级
- 点击「保存」完成任务创建
📖 功能详解
1. 任务管理
添加任务
- 点击主界面的「添加任务」按钮
- 在弹出的对话框中填写:
- 标题(必填):任务的简短描述
- 描述(可选):任务的详细说明
- 优先级:选择高、中、低优先级
- 点击「保存」创建任务
编辑任务
- 点击任务项右侧的「编辑」按钮
- 在对话框中修改任务信息
- 点击「保存」确认修改
完成任务
- 点击任务项左侧的复选框
- 已完成的任务会显示删除线效果
- 再次点击可以取消完成状态
删除任务
- 点击任务项右侧的「删除」按钮
- 在确认对话框中点击「是」删除任务
2. 任务筛选
按状态筛选
- 全部:显示所有任务
- 待完成:只显示未完成的任务
- 已完成:只显示已完成的任务
按优先级筛选
- 在优先级下拉框中选择要显示的优先级
- 可以选择「全部」或特定优先级(高/中/低)
3. 批量操作
清除已完成任务
- 点击「清除已完成」按钮
- 确认后将删除所有已完成的任务
- 此操作不可撤销,请谨慎使用
4. 数据管理
自动保存
- 应用每 30 秒自动保存一次数据
- 每次操作(添加、编辑、删除)后立即保存
- 数据保存在
data/tasks.json
文件中
手动备份
- 通过菜单栏「文件」→「备份数据」
- 备份文件保存为
tasks.json.backup
🏗️ 项目架构
目录结构
todo-app-pyqt/
├── main.py # 应用入口文件
├── requirements.txt # 项目依赖
├── README.md # 项目说明文档
├── demo.py # 功能演示脚本
│
├── ui/ # 用户界面模块
│ ├── __init__.py
│ ├── main_window.py # 主窗口界面
│ ├── task_dialog.py # 任务编辑对话框
│ └── task_item.py # 单个任务项组件
│
├── models/ # 数据模型模块
│ ├── __init__.py
│ ├── task.py # 任务数据模型
│ └── task_manager.py # 任务管理器
│
├── utils/ # 工具模块
│ ├── __init__.py
│ └── storage.py # 数据存储工具
│
├── resources/ # 资源文件
│ └── styles.qss # 界面样式文件
│
└── data/ # 数据文件目录├── tasks.json # 任务数据文件└── tasks.json.backup # 数据备份文件
核心模块说明
1. 数据模型层 (models/)
task.py - 任务数据模型
Task
类:表示单个任务Priority
枚举:任务优先级(高/中/低)TaskStatus
枚举:任务状态(待完成/已完成)- 提供任务的创建、更新、序列化等方法
task_manager.py - 任务管理器
TaskManager
类:管理所有任务- 提供任务的增删改查功能
- 支持按状态、优先级筛选任务
- 提供任务统计信息
2. 用户界面层 (ui/)
main_window.py - 主窗口
- 应用的主界面
- 包含菜单栏、工具栏、任务列表
- 处理用户交互和界面更新
task_dialog.py - 任务编辑对话框
- 用于添加和编辑任务
- 表单验证和数据收集
- 支持静态方法调用
task_item.py - 任务项组件
- 单个任务的显示组件
- 包含复选框、任务信息、操作按钮
- 支持任务状态切换和编辑删除
3. 工具层 (utils/)
storage.py - 数据存储
- 处理 JSON 文件的读写
- 提供数据备份功能
- 错误处理和数据验证
技术栈
- GUI 框架:PyQt5 5.15.9
- 编程语言:Python 3.7+
- 数据存储:JSON 文件
- 架构模式:MVC(模型-视图-控制器)
🎨 界面预览
主界面
- 顶部工具栏:添加任务按钮、筛选器、清除按钮
- 中央区域:任务列表(支持滚动)
- 底部状态栏:任务统计信息
任务项
- 左侧:完成状态复选框
- 中间:任务标题、描述、时间信息
- 右侧:优先级标签、编辑和删除按钮
编辑对话框
- 任务标题输入框(必填)
- 任务描述文本框(可选)
- 优先级下拉选择器
- 保存和取消按钮
🔧 高级功能
快捷键
Ctrl + S
:手动保存数据Ctrl + Q
:退出应用
数据格式
任务数据以 JSON 格式存储,结构如下:
{"tasks": [{"id": "唯一标识符","title": "任务标题","description": "任务描述","priority": "优先级","status": "状态","created_at": "创建时间","updated_at": "更新时间","completed_at": "完成时间"}]
}
自定义样式
应用使用 QSS(Qt Style Sheets)进行界面美化,样式文件位于 resources/styles.qss
。您可以修改此文件来自定义界面外观。
🧪 功能演示
项目包含一个演示脚本,展示核心功能的使用:
python demo.py
演示内容包括:
- 任务的创建、更新、删除
- 状态切换和优先级筛选
- 数据持久化和统计功能
🐛 故障排除
常见问题
-
应用无法启动
- 检查 Python 版本是否为 3.7+
- 确认已安装 PyQt5:
pip install PyQt5
-
数据丢失
- 检查
data/
目录是否存在 - 查看是否有备份文件
tasks.json.backup
- 检查
-
界面显示异常
- 尝试删除
__pycache__
目录 - 重新启动应用
- 尝试删除
日志和调试
- 应用会在控制台输出错误信息
- 数据保存失败时会显示错误提示
- 可以通过修改代码添加更详细的日志
🤝 贡献指南
欢迎提交 Issue 和 Pull Request!
开发环境设置
- Fork 项目
- 创建功能分支
- 提交更改
- 创建 Pull Request
代码规范
- 遵循 PEP 8 Python 代码规范
- 添加适当的注释和文档字符串
- 保持代码简洁和可读性
📄 许可证
本项目采用 MIT 许可证 - 详见 LICENSE 文件
🙏 致谢
- PyQt5 团队提供的优秀 GUI 框架
- Python 社区的支持和贡献
享受高效的任务管理体验! 🎉