🧪 上班摸鱼也能写出生产力神器?教你用 Python 写一个系统托盘定时提醒工具

💡 前言

作为一个每天对着电脑敲代码的程序员,我深知久坐、忘记喝水、错过休息时间对身体的影响。于是我就想:能不能写一个小工具,不打扰工作、又能在合适的时间提醒我做点"养生"动作?

于是我花了不到一个小时,写了一个 系统托盘定时提醒工具

  • ✅ 支持定时提醒喝水、起身活动、拉伸
  • ✅ 图标隐藏在系统托盘中,不占桌面空间
  • ✅ 点击菜单可切换提醒频率
  • ✅ 支持 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()

🧩 总结

这个工具从构思到实现不到两个小时,却解决了我在工作中最头疼的问题之一 ------ 忘记休息。

它不仅是一个"摸鱼神器",还能帮助你提升工作效率、养成良好的作息习惯。

如果你也觉得上班有点无聊,不妨动手试试做一个属于自己的"健康助手"。说不定哪天,你的同事也会来问你要链接呢 😏

相关推荐
舒一笑38 分钟前
为什么where=Version就是乐观锁了?
后端·mysql·程序员
GoGeekBaird42 分钟前
关于垂类AI应用落地行业的方法论思考
后端·github·agent
小宁爱Python1 小时前
Django 基础入门:命令、结构与核心配置全解析
后端·python·django
你的人类朋友2 小时前
认识一下Bcrypt哈希算法
后端·安全·程序员
tangweiguo030519872 小时前
基于 Django 与 Bootstrap 构建的现代化设备管理平台
后端·django·bootstrap
IT果果日记2 小时前
详解DataX开发达梦数据库插件
大数据·数据库·后端
dazhong20122 小时前
Spring Boot 项目新增 Module 完整指南
java·spring boot·后端
bobz9652 小时前
Cilium + Kubevirt 与 Kube-OVN + Kubevirt 在公有云场景下的对比与选择
后端
David爱编程3 小时前
深度解析:synchronized 性能演进史,从 JDK1.6 到 JDK17
java·后端
脑子慢且灵4 小时前
【JavaWeb】一个简单的Web浏览服务程序
java·前端·后端·servlet·tomcat·web·javaee