Python实现Windows10可点击Toast通知无法留存操作中心问题求解
问题根因
win10toast_click 库在迭代时移除了前代 win10toast_persist 中默认传入的持久化相关参数,导致通知弹窗结束后直接销毁,不会进入操作中心留存。另外你提供的测试代码存在语法错误,多个参数之间缺少逗号分隔,运行时会先抛出语法异常。
可行解决思路
1. 修复当前 win10toast_click 调用
部分版本的 win10toast_click 实际还保留了持久化参数的支持,只是没有写入官方文档,你可以修正代码语法后新增persist=True参数测试效果:
import win10toast_click def test(): print("Hello") toaster = win10toast_click.ToastNotifier() toaster.show_toast( "Example one", "Click to hello", icon_path=None, duration=None, threaded=True, callback_on_click=test, persist=True # 新增持久化参数 )
如果加了参数还是无效,说明你安装的版本已经彻底移除了该参数,直接修改库源码即可:找到Python环境中win10toast_click的安装目录,打开__init__.py,找到show_toast方法中构造Toast XML的部分,在<toast>标签中添加duration="long"和scenario="reminder"属性,就能强制通知留存到操作中心。
2. 替代方案:使用原生兼容的通知库
如果不想修改第三方库源码,可以使用windows-toasts库,该库完全适配Windows通知规范,原生支持点击回调和通知持久化,兼容性更好:
安装命令:pip install windows-toasts
使用示例:
from windows_toasts import Toast, WindowsToaster def test_callback(arguments): print("Hello") toaster = WindowsToaster('测试应用') new_toast = Toast() new_toast.text_fields = ["Example one", "Click to hello"] new_toast.on_activated = test_callback # 配置持久化属性,未点击的通知会自动进入操作中心 new_toast.scenario = 'reminder' new_toast.suppress_popup = False toaster.show_toast(new_toast)
内容的提问来源于stack exchange,提问作者CSLII
相关产品推荐
相关产品推荐

