{"id":50709232,"url":"https://github.com/coowinit/memo-calendar-tool","last_synced_at":"2026-06-09T14:01:46.878Z","repository":{"id":356019544,"uuid":"1230665181","full_name":"coowinit/memo-calendar-tool","owner":"coowinit","description":"基于 Python Tkinter 的本地离线桌面万年历备忘录工具，支持日期筛选、到点提醒、搜索排序、逾期处理、迷你悬浮待办窗口和 JSON 备份恢复。","archived":false,"fork":false,"pushed_at":"2026-05-06T08:11:53.000Z","size":10149,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-06T10:09:25.652Z","etag":null,"topics":["calendar","desktop-app","json-backup","memo","python","reminder","tkinter","todo","windows-tool"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/coowinit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-06T07:52:28.000Z","updated_at":"2026-05-06T08:11:57.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/coowinit/memo-calendar-tool","commit_stats":null,"previous_names":["coowinit/memo-calendar-tool"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/coowinit/memo-calendar-tool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coowinit%2Fmemo-calendar-tool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coowinit%2Fmemo-calendar-tool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coowinit%2Fmemo-calendar-tool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coowinit%2Fmemo-calendar-tool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coowinit","download_url":"https://codeload.github.com/coowinit/memo-calendar-tool/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coowinit%2Fmemo-calendar-tool/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34110012,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-09T02:00:06.510Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["calendar","desktop-app","json-backup","memo","python","reminder","tkinter","todo","windows-tool"],"created_at":"2026-06-09T14:01:45.691Z","updated_at":"2026-06-09T14:01:46.869Z","avatar_url":"https://github.com/coowinit.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MemoCalendarReminder\n\n一个基于 Python Tkinter 开发的本地桌面万年历备忘录工具，集成日期筛选、到点提醒、搜索排序、逾期处理、迷你悬浮待办窗口和 JSON 备份恢复功能。\n\n它适合个人日常待办、项目跟进、临时提醒和本地离线备忘场景。所有数据默认保存在本机，不依赖服务器、不依赖浏览器，也不需要联网。\n\n## 功能特点\n\n### 万年历视图\n\n- 左侧月历视图，支持按年份和月份切换\n- 单击日期：筛选该日期的备忘事项\n- 双击日期：快速新增该日期的事项\n- “今日”按钮：跳转到今天并恢复显示全部事项\n- 日历日期格内显示事项数量提示：\n  - 1～3 条事项显示小圆点\n  - 4 条及以上显示数字徽标\n  - 10 条及以上显示 `9+`\n\n### 备忘录管理\n\n- 添加、编辑、删除备忘事项\n- 支持多选批量操作\n- 支持标记完成、恢复提醒\n- 支持四象限优先级：\n  - 不重要不紧急\n  - 不重要紧急\n  - 重要不紧急\n  - 重要紧急\n- 支持事项状态显示：\n  - 待提醒\n  - 已提醒\n  - 已完成\n  - 逾期\n\n### 搜索、筛选与排序\n\n- 关键词搜索\n- 按日期筛选\n- 按优先级筛选\n- 按状态筛选\n- 支持排序方式：\n  - 时间升序\n  - 时间降序\n  - 优先级高到低\n  - 优先级低到高\n  - 状态排序\n  - 逾期优先\n\n### 到点提醒\n\n- 到达设定日期和时间后弹窗提醒\n- 提醒窗口置顶显示\n- 支持提示音提醒（Windows 环境）\n- 提醒后事项自动变为“已提醒”，避免重复弹窗\n- 弹窗中显示事项日期、时间、内容和优先级色条\n\n### 逾期处理\n\n- 未完成且时间已过的事项会显示为逾期\n- 逾期事项高亮显示\n- 支持当前筛选范围内批量完成逾期事项\n- 支持当前筛选范围内批量恢复逾期提醒\n- 恢复逾期提醒时会自动顺延 5 分钟，避免恢复后立即连续弹窗\n\n### 迷你悬浮窗口\n\n- 内置悬浮待办窗口\n- 窗口置顶显示，适合边工作边查看待办\n- 支持今日、待提醒、已提醒、已完成、逾期、全部等视图\n- 支持搜索和优先级筛选\n- 支持滚轮滚动\n- 可从迷你窗定位到主窗口中的对应事项\n\n### 数据备份与恢复\n\n- 右上角支持导出 JSON 备份\n- 支持导入 JSON 备份\n- 导入时可选择：\n  - 覆盖当前数据\n  - 合并到当前数据\n- 合并导入时会自动处理 ID 去重\n\n## 运行环境\n\n- Python 3.8 或更高版本\n- Tkinter\n\nTkinter 通常随 Python 官方安装包一起安装。如果运行时报 `_tkinter` 相关错误，建议安装 Python 官方完整版。\n\n## 界面截图\n\n![Preview](./screenshots/preview.png)\n\n## 快速开始\n\n### 1. 下载源码\n\n将 `MemoCalendarReminder.py` 放到你希望保存项目的目录，例如：\n\n```text\nG:\\python\\memo_calendar\\\n```\n\n### 2. 进入项目目录\n\n```bat\ncd /d G:\\python\\memo_calendar\n```\n\n### 3. 运行程序\n\n```bat\npython MemoCalendarReminder.py\n```\n\n如果你的 Python 没有加入 PATH，可以使用完整路径运行：\n\n```bat\nG:\\python\\python.exe MemoCalendarReminder.py\n```\n\n## 环境检查\n\n检查 Python 版本：\n\n```bat\npython --version\n```\n\n检查 Python 路径：\n\n```bat\nwhere python\n```\n\n检查 Tkinter：\n\n```bat\npython -c \"import tkinter; print('tkinter ok')\"\n```\n\n检查源码语法：\n\n```bat\npython -m py_compile MemoCalendarReminder.py\n```\n\n## 数据保存位置\n\n程序会自动在本机创建数据目录并保存备忘录数据。\n\nWindows 默认数据文件位置：\n\n```text\n%APPDATA%\\MemoReminder\\memo_data.json\n```\n\nmacOS / Linux 默认数据文件位置：\n\n```text\n~/.memo_reminder/memo_data.json\n```\n\n建议定期使用程序右上角的“导出备份”功能，把备份文件保存到安全位置。\n\n## 打包为 Windows EXE\n\n如果希望在没有 Python 环境的电脑上使用，可以通过 PyInstaller 打包为单文件 EXE。\n\n### 安装 PyInstaller\n\n```bat\npython -m pip install -U pyinstaller\n```\n\n### 打包命令\n\n```bat\npyinstaller --onefile --noconsole --name MemoCalendarReminder MemoCalendarReminder.py\n```\n\n打包完成后，EXE 文件通常位于：\n\n```text\ndist\\MemoCalendarReminder.exe\n```\n\n### 调试打包\n\n如果第一次打包后无法启动，建议先去掉 `--noconsole`，这样可以看到报错信息：\n\n```bat\npyinstaller --onefile --name MemoCalendarReminder MemoCalendarReminder.py\n```\n\n确认没有问题后，再使用 `--noconsole` 生成正式版本。\n\n推荐使用这个命令：\n\n```bat\npyinstaller --onefile --windowed --clean --name MemoCalendarReminder MemoCalendarReminder.py\n```\n\n## 推荐目录结构\n\n```text\nmemo-calendar-reminder/\n├─ MemoCalendarReminder.py\n├─ README.md\n├─ docs/\n│  └─ 万年历备忘录开发指南.md\n├─ backups/\n│  └─ memo_backup_YYYYMMDD_HHMM.json\n└─ dist/\n   └─ MemoCalendarReminder.exe\n```\n\n说明：\n\n- `MemoCalendarReminder.py`：主程序源码\n- `README.md`：项目说明文档\n- `docs/`：开发指南或使用说明\n- `backups/`：建议存放导出的 JSON 备份\n- `dist/`：PyInstaller 打包后的输出目录\n\n## 使用建议\n\n- 单击日历中的日期，可以快速聚焦处理某一天的事项\n- 双击日期，可以快速新增当天事项\n- 工作时可以打开“迷你窗”，作为悬浮待办列表使用\n- 对积压事项建议使用“逾期优先”排序\n- 每周导出一次 JSON 备份，便于换电脑或重装系统时恢复\n\n## 当前说明\n\n- 本工具定位为个人本地桌面工具，适合单人使用\n- 数据以 JSON 形式保存在本机\n- 当前版本不依赖数据库和网络服务\n- 源码中已包含重复字段和重复选项，后续可以继续扩展为真正的循环提醒规则\n\n## 后续可扩展方向\n\n- 支持 5 / 10 / 30 / 60 分钟稍后提醒\n- 支持自定义勿扰时间段\n- 支持电脑睡眠或重启后的错过提醒补弹\n- 将 JSON 数据升级为 SQLite 存储\n- 增加快捷键：Ctrl+N 新建、Ctrl+F 搜索、Delete 删除、Ctrl+S 保存\n- 增加导入导出 CSV\n- 增加主题颜色和字体大小设置\n- 增加系统托盘图标\n\n## 版本信息\n\n当前源码版本：\n\n```text\nv14-left400-square-cells-2026-02-11\n```\n\n## License\n\n本项目可作为个人桌面工具自由使用和修改。正式开源前，建议根据你的发布需求补充 MIT、Apache-2.0 或其他开源协议文件。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoowinit%2Fmemo-calendar-tool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoowinit%2Fmemo-calendar-tool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoowinit%2Fmemo-calendar-tool/lists"}