Python 系统通知弹窗提醒:plyer 跨平台 Toast 通知
Python 用 plyer 库在 Windows、Mac、Linux 上弹出系统级通知弹窗,配合定时任务实现任务完成提醒、喝水休息提醒、告警推送,附完整代码。
场景痛点
脚本跑半小时不知道什么时候结束、定时任务到点了人不在电脑前、写代码写得忘了喝水,都需要一个"系统级弹窗提醒"。Python 用 plyer 一个库就能在 Windows、Mac、Linux 上弹出原生通知,配合 schedule 实现"任务完了喊我",比盯着控制台高效。
用到的库
pip install plyer
Windows 上会自动用 win10toast,Mac 用系统通知中心,Linux 用 notify-send。
完整代码
import time
from plyer import notification
def show_notification(title, message, app_name="Python 提醒",
timeout=5, icon_path=None):
"""弹出系统通知"""
notification.notify(
title=title,
message=message,
app_name=app_name,
app_icon=icon_path, # ico 文件路径,可省略
timeout=timeout, # 通知自动消失秒数
toast=False,
)
def long_task_then_notify():
"""模拟一个耗时任务,跑完弹通知"""
print("开始执行任务(模拟 5 秒)...")
time.sleep(5)
show_notification(
title="任务完成",
message="报表已生成完毕,请查收 output.xlsx",
timeout=10,
)
def water_reminder(interval_minutes=50):
"""每 50 分钟提醒喝水一次"""
show_notification(
title="休息一下",
message=f"已经连续工作 {interval_minutes} 分钟啦,起来喝口水、动一动吧。",
timeout=10,
)
def main():
# 立刻弹一条测试通知
show_notification(
title="Python 提醒",
message="这是一条来自 Python 的测试通知。",
timeout=5,
)
# 跑一个耗时任务,完了弹通知
long_task_then_notify()
# 喝水提醒(演示只弹一次,实际可配合 schedule 循环)
# water_reminder(50)
if __name__ == "__main__":
main()
代码讲解
notification.notify(...)是 plyer 统一的调用入口,跨平台自动选择后端,Windows 用 Toast,Mac 用 osascript,Linux 用 notify-send。title是通知标题(粗体那一行),message是正文,两行都支持中文。timeout=5表示 5 秒后自动消失;Windows 下这个参数不太生效,通知会一直留在通知中心。app_icon传一个.ico文件路径可以自定义通知图标,不传就用默认。- 把
long_task_then_notify接到你自己的报表生成函数后面,跑完立刻弹窗,不用再盯控制台。
运行结果
运行后右下角(Mac 右上角)会弹出系统原生通知:先弹一条"Python 提醒"测试消息,5 秒后再弹一条"任务完成"。通知会出现在系统通知中心,事后还能回看。
注意事项
- Windows 10/11 第一次弹窗可能被"专注助手"挡掉,去设置里关掉专注助手即可。
- Mac 上需要在"系统偏好设置→通知"里允许终端/Python 发通知,否则会静默。
- Linux 桌面如果是最小化安装,可能缺
libnotify-bin,sudo apt install libnotify-bin即可。 - 通知里不能放按钮,只能看;要交互得自己写 GUI。
- plyer 不支持富文本和图片附件,要复杂通知建议走企业微信/钉钉机器人。
- 远程 SSH 跑的脚本没有桌面会话,弹不出通知;这种场景用 webhook 推到手机更合适。

更新时间:2026-09-14 20:34:12
上一篇:Python 企业微信机器人 Webhook 发消息:群通知推送教程