引言:一个被“逼”出来的实用工具
作为一个常年与电脑打交道的人,你是否也经历过这样的场景:
- 专注写代码时,系统角落弹出一个小小的通知:“下午3点有会”,等你回过神来,会议已经开始半小时了...
- 设置了备忘录,但它只是在通知栏里静静地躺着,根本起不到“提醒”的作用。
- 尤其是在 Deepin 这样追求简洁的 Linux 系统上,想找一个界面美观、提醒方式强力、功能又恰到好处的提醒工具,真的太难了!
通知太“温柔”,我们总“错过”。这个痛点折磨了我很久,于是,我决定自己动手,丰衣足食——用 Python 为自己,也为有同样困扰的你,打造一个想忽略都难的桌面提醒工具:DeskReminder。

DeskReminder:不止是“提醒”,更是“必达”
忘了那些“阅后即焚”的系统通知吧!DeskReminder 的设计初衷就是要足够“霸道”,让你的每一个重要事项都能被郑重对待。
当提醒时间一到,它会**“Duang”地一下在屏幕正中央**弹出一个独立的、置顶的对话框,并伴随着清脆的铃声(可以自定义哦!)。你必须亲手点击“知道了”,它才会消失。

这种强制交互的设计,让你无法轻易忽视,确保信息100%送达。
三大核心功能,满足你挑剔的需求
在动手之前,我为它设定了几个核心目标。如今,这些功能都已完美实现:
1. 灵活多样的提醒模式 ⏰
无论你的需求多变,总有一种方式适合你:
- 延迟提醒:最简单直接的方式。“10 分钟后提醒我起来活动一下”,输入数字即可,省时省力。
- 指定时间:为重要约会和会议量身定做。“2025-10-31 10:00 记得参加线上分享会”,精准到分钟。
- Cron 表达式:为极客和效率达人准备的终极武器!无论是“每天早上 9 点开站会” (
0 9 * * *) 还是“每周五下午 5 点交周报” (0 17 * * 5),都能轻松设定。
更贴心的是,为了让你告别“猜谜式”的 Cron 编写,我特地加入了**“最近10次执行时间预览”**功能,在你输入表达式时,它会立刻计算并以下拉框的形式告诉你下一次触发的时间,一目了然!


2. 直观高效的提醒管理 🗂️
所有的提醒任务都可以在“提醒管理”列表中清晰地看到。你可以随时:
- 查看状态:一眼就能分辨出任务类型、下次执行时间以及是否启用。
- 一键操作:轻松完成对任务的启用、禁用、编辑和删除。
- 重复利用:对于已经提醒过的一次性任务,不用删除,直接编辑修改时间,即可让它“复活”,省去重复创建的麻烦。
3. 真正实用的后台运行与跨平台 💻
- 最小化到托盘:点击关闭按钮,程序不会退出,而是静静地“潜伏”在系统托盘里,不占用任务栏空间,时刻准备着下一次提醒。
- 数据持久化:所有提醒和设置都会自动保存在本地,即使关闭电脑,下次打开依然无缝衔接。
- 跨平台支持:基于 Python 和 Tkinter 构建,无论你用的是 Windows、macOS 还是 Linux (Deepin/Ubuntu...),都能获得一致的体验。
技术亮点:给爱钻研的你
作为一名开发者,除了实现功能,代码的健壮性和优雅性也是我所追求的。在这个小工具的开发过程中,我踩了不少坑,也沉淀了一些有意思的解决方案:
- 高效的任务调度核心:没有用复杂的库,而是采用 Python 内置的
heapq(最小堆) 模块构建了一个轻量级的调度器线程。它能以极低的资源占用,精准地找到下一个最近要触发的任务并准时执行。 - 顽固的跨平台兼容:
- Linux 托盘菜单修复:解决了在 Deepin 等部分 Linux 发行版上
pystray库托盘图标右键菜单不显示的问题,通过强制指定appindicator后端搞定。 - 智能声音播放:封装了一个健壮的
SoundPlayer类,优先使用simpleaudio播放 WAV,对 MP3 等格式则会自动寻找系统中安装的vlc,mpg123等命令行播放器,甚至还能回退到pygame,确保铃声在各种环境下都能响起。 - 中文字体显示优化:针对 Tkinter 在不同平台下
Treeview列表行高不一致、导致中文字体被遮挡的“老大难”问题,通过创建自定义样式,强制设定了足够大的rowheight,完美解决了显示问题。
- Linux 托盘菜单修复:解决了在 Deepin 等部分 Linux 发行版上
- 数据安全与用户体验:
- 原子化写入:通过“先写临时文件再重命名”的方式保存 JSON 数据,有效防止了在保存过程中因意外中断(如断电)导致的数据文件损坏。
- 细节打磨:输入框支持
Home / End键快速跳转、新建任务后自动清空表单、添加了详细的日志系统......这些细节让工具用起来更顺手。
开源,与你共享!
如果你也曾被“记不住事”所困扰,或者想找一个简单实用的 Python 桌面应用项目来学习,那么 DeskReminder 绝对是一个不错的选择。
项目已在 GitHub 开源,欢迎大家前来 Star、Fork,或者提出你的宝贵建议!
- 源码仓库地址:
https://github.com/zhengmingliang/code-fragment/blob/main/python/reminder_app/reminder_app.py
希望这个从真实需求出发的小工具,也能成为你工作学习中的得力助手,让我们一起告别错过,拥抱高效!
Q.E.D.


