🧪 上班摸鱼也能写出生产力神器?教你用 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()

🧩 总结

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

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

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

相关推荐
晴空月明1 小时前
分布式系统高可用性设计 - 监控与日志系统
后端
songroom2 小时前
【转】Rust: PhantomData,#may_dangle和Drop Check 真真假假
开发语言·后端·rust
红尘散仙2 小时前
Rust 终端 UI 开发新玩法:用 Ratatui Kit 轻松打造高颜值 CLI
前端·后端·rust
mldong2 小时前
mldong-goframe:基于 GoFrame + Vben5 的全栈快速开发框架正式开源!
vue.js·后端·go
canonical_entropy3 小时前
集成NopReport动态生成复杂Word表格
后端·低代码
come112343 小时前
Go 包管理工具详解:安装与使用指南
开发语言·后端·golang
绝无仅有3 小时前
OSS文件上传解析失败,错误:文件下载失败的排查与解决
后端·面试·架构
LaoZhangAI4 小时前
Kiro vs Cursor:2025年AI编程IDE深度对比
前端·后端
brzhang5 小时前
OpenAI 7周发布Codex,我们的数据库迁移为何要花一年?
前端·后端·架构