一款基于 Python 开发的桌面端喝水提醒工具,支持系统托盘运行、自定义提醒间隔、日志记录与管理,帮助用户养成规律饮水的健康习惯。
- 单实例运行:避免重复启动,已运行时会提示并自动退出新实例
- 系统托盘常驻:最小化时隐藏到系统托盘,不占用桌面空间
- 自定义提醒间隔:可自由设置喝水提醒频率(默认20分钟)
- 实时倒计时显示:主界面实时展示距离下次提醒的时间
- 日志管理:
- 自动记录程序运行日志(启动、停止、提醒、操作等)
- 自动清理30天前的旧日志,节省存储空间
- 支持手动删除历史日志、打开日志文件夹
- 桌面快捷方式:首次运行自动创建桌面快捷方式,方便后续启动
- 友好UI设计:简洁清晰的界面,支持窗口居中显示、置顶提醒弹窗
| 环境/依赖 | 说明 |
|---|---|
| 操作系统 | Windows(依赖 pywin32 实现单实例、快捷方式功能,暂不支持 macOS/Linux) |
| Python 版本 | Python 3.7 及以上 |
| 依赖库 | tkinter(Python 内置,一般无需额外安装)、Pillow、pystray、pywin32 |
前往 Python 官网 下载并安装 Python 3.7+,安装时需勾选 "Add Python to PATH"。
打开命令提示符(CMD)或终端,执行以下命令安装所需依赖:
pip install Pillow pystray pywin32- 方式1:直接复制代码到本地,保存为
HydrationReminder.py - 方式2:通过 Git 克隆(若代码已托管到仓库):
git clone <仓库地址> cd <仓库目录>
- 首次启动:双击
HydrationReminder.py,程序会自动创建桌面快捷方式(该功能正在开发中,暂时还未上线) - 后续启动:双击桌面的「HydrationReminder」快捷方式,或再次运行
HydrationReminder.py
| 功能区域 | 操作说明 |
|---|---|
| 状态显示 | 显示当前提醒服务状态(运行中/已停止)及当前提醒间隔 |
| 提醒间隔设置 | 在输入框中输入数字(分钟),点击「开始提醒」生效 |
| 倒计时显示 | 提醒服务运行时,实时显示距离下次提醒的时间(格式:MM:SS) |
| 开始/停止提醒 | 点击按钮切换提醒服务状态(运行时显示「停止提醒」,停止时显示「开始提醒」) |
| 关闭程序 | 点击「关闭程序」彻底退出(仅隐藏窗口可通过系统托盘恢复) |
程序最小化或关闭主窗口后,会在系统托盘(任务栏右下角)显示「水滴」图标,右键图标可展开菜单:
- 打开主界面:恢复显示主窗口
- 开始提醒:启动提醒服务(勾选状态表示当前已运行)
- 停止提醒:暂停提醒服务
- 打开日志文件夹:打开日志存储目录,查看所有运行日志
- 删除历史日志:删除除当前运行日志外的所有旧日志
- 退出程序:彻底关闭程序(与主界面「关闭程序」功能一致)
当提醒时间到达时,会弹出置顶的提醒窗口,点击「确定」后,程序会自动计算下次提醒时间并继续倒计时。
程序会在当前运行目录下创建 HydrationReminderLog 文件夹,所有日志文件均保存在此目录中。
日志文件以「启动时间」命名,格式为:YYYY-MM-DD_HH-MM-SS.log(例如:2024-05-20_14-30-00.log)。
程序每次启动时,会自动删除 30天前 的旧日志,仅保留近30天的日志文件和当前运行日志,避免占用过多磁盘空间。
解决方法:打开 CMD,执行 pip install pywin32,安装完成后重新启动程序。
解决方法:查看系统托盘(任务栏右下角),右键「水滴」图标,选择「打开主界面」。
解决方法:
- 检查是否有权限在桌面创建文件(管理员身份运行程序尝试)
- 手动创建快捷方式:右键
HydrationReminder.py→ 发送到 → 桌面快捷方式
解决方法:
- 检查程序是否处于「提醒运行中」状态(系统托盘菜单「开始提醒」是否勾选)
- 检查系统是否禁止了程序的弹窗通知(在系统设置中允许程序发送通知)
- 操作系统限制:当前版本依赖
pywin32库,仅支持 Windows 系统,macOS 和 Linux 系统暂不兼容。 - 单实例限制:同一台电脑只能运行一个程序实例,重复启动会提示「已在运行」并自动退出。
- 日志保留:手动删除历史日志时,程序会保留当前正在写入的日志文件(避免删除正在使用的日志)。
- 权限问题:若无法创建快捷方式或日志文件夹,尝试以「管理员身份」运行程序。
tkinter:构建主界面和提醒弹窗Pillow (PIL):生成系统托盘图标(水滴形状)pystray:实现系统托盘功能(图标显示、右键菜单)pywin32:实现单实例运行限制、创建桌面快捷方式logging:记录程序运行日志threading:实现提醒倒计时的多线程处理(避免阻塞主界面)
若在使用过程中遇到问题,可查看日志文件定位问题,或提交 Issue 反馈。