我的知识记录

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-binsudo apt install libnotify-bin 即可。
  • 通知里不能放按钮,只能看;要交互得自己写 GUI。
  • plyer 不支持富文本和图片附件,要复杂通知建议走企业微信/钉钉机器人。
  • 远程 SSH 跑的脚本没有桌面会话,弹不出通知;这种场景用 webhook 推到手机更合适。

Python 系统通知弹窗提醒:plyer 跨平台 Toast 通知

标签:

更新时间:2026-09-14 20:34:12

上一篇:Python 企业微信机器人 Webhook 发消息:群通知推送教程

下一篇:Python 模拟键盘鼠标操作:pyautogui 自动化入门