💡 前言
作为一个每天对着电脑敲代码的程序员,我深知久坐、忘记喝水、错过休息时间对身体的影响。于是我就想:能不能写一个小工具,不打扰工作、又能在合适的时间提醒我做点"养生"动作?
于是我花了不到一个小时,写了一个 系统托盘定时提醒工具 :
- ✅ 支持定时提醒喝水、起身活动、拉伸
- ✅ 图标隐藏在系统托盘中,不占桌面空间
- ✅ 点击菜单可切换提醒频率
- ✅ 支持 Windows / macOS / Linux
- ✅ 一行命令运行,无界面干扰
这篇文章我会带你一步步实现这个小工具,不需要复杂的前端知识,纯 Python 实现 。
🧰 技术选型
整个项目使用的是非常轻量级的技术栈,非常适合新手入门:
技术 | 作用 |
---|---|
pystray |
创建系统托盘图标和右键菜单 |
Pillow |
生成托盘图标图像 |
threading |
多线程执行定时任务 |
ctypes |
弹出原生提示框(Windows) |
这些库都很容易安装,也不依赖任何 GUI 框架,轻巧又实用。
📦 功能设计
我们这个工具主要包含以下几个功能模块:
1. 托盘图标显示
程序启动后,在系统托盘区显示一个蓝色图标,不占用主屏幕空间。
2. 右键菜单设置提醒
支持以下菜单项:
- 马上提醒一次
- 每小时提醒喝水
- 每两小时提醒拉伸
- 退出程序
3. 定时弹窗提醒
根据用户选择的提醒间隔,定时弹出提示框,比如:"该喝口水了!"、"记得站起来走动一下哦~"
4. 后台静默运行
程序全程运行在后台,不会干扰你的日常工作。
🛠️ 开发步骤
接下来我们分步讲解如何构建这个工具。
步骤一:准备开发环境
首先确保你已经安装好 Python,并安装必要的依赖包:
bash
pip install pystray pillow
如果你是在 Windows 上运行,建议额外安装:
bash
pip install pywin32
这能更好地支持系统交互。
步骤二:生成托盘图标
我们使用 Pillow 生成一个简单的圆形图标,作为我们的托盘图标。
📌 你可以自定义图标样式,比如换成水杯、钟表等图案。
步骤三:创建菜单与事件绑定
我们通过 pystray.Menu
创建一个右键菜单,并为每个菜单项绑定对应的功能函数。
菜单项包括:
- 马上提醒
- 每小时提醒
- 每两小时拉伸提醒
- 退出程序
步骤四:实现定时提醒机制
使用 threading
在后台运行定时任务,每隔一段时间触发提醒。
提醒方式使用 Windows 原生弹窗(也可以换成通知栏或日志输出)。
步骤五:启动系统托盘应用
最后,我们将所有组件组合起来,调用 icon.run()
启动托盘程序。
python
import time
import threading
import sys
import os
from PIL import Image, ImageDraw
import pystray
# 生成一个简单的图标(蓝色圆形)
def create_image():
image = Image.new('RGB', (64, 64), color=(255, 255, 255))
dc = ImageDraw.Draw(image)
dc.ellipse((12, 12, 52, 52), fill=(0, 150, 255)) # 蓝色圆圈
return image
# 提醒函数(可以替换成你想做的任何操作)
def remind(message="该休息一下啦!"):
print(message)
import ctypes
ctypes.windll.user32.MessageBoxW(0, message, "💧 健康提醒", 0x40)
# 定时任务线程
def start_reminder(icon, interval_minutes, message):
def run():
while icon.visible:
time.sleep(interval_minutes * 60)
if icon.visible:
remind(message)
threading.Thread(target=run, daemon=True).start()
# 退出程序
def exit_program(icon, item):
icon.stop()
os._exit(0)
# 创建系统托盘图标菜单
def create_menu():
return pystray.Menu(
pystray.MenuItem("💧 马上提醒", lambda: remind("快去喝口水吧!")),
pystray.MenuItem("⏰ 每小时提醒一次", lambda: start_reminder(menu_icon, 60, "每小时提醒:起身活动一下吧!")),
pystray.MenuItem("🧘 每两小时拉伸提醒", lambda: start_reminder(menu_icon, 120, "两小时到了,记得做做拉伸!")),
pystray.MenuItem("❌ 退出", exit_program)
)
# 初始化系统托盘图标菜单
icon_image = create_image()
menu = create_menu()
menu_icon = pystray.Icon("健康助手", icon_image, "💧 健康提醒小助手", menu)
print("系统托盘提醒器已启动,图标已显示在右下角。")
print("你可以点击托盘图标设置提醒频率。")
# 启动系统托盘图标
menu_icon.run()
🧩 总结
这个工具从构思到实现不到两个小时,却解决了我在工作中最头疼的问题之一 ------ 忘记休息。
它不仅是一个"摸鱼神器",还能帮助你提升工作效率、养成良好的作息习惯。
如果你也觉得上班有点无聊,不妨动手试试做一个属于自己的"健康助手"。说不定哪天,你的同事也会来问你要链接呢 😏