python - 当我尝试使用 winrt 发出通知时,它会出错

标签 python windows notifications windows-runtime

我正在尝试让 winRT 发送通知。
我尝试这样做以发出通知:

import winrt.windows.ui.notifications as notifications
import winrt.windows.data.xml.dom as dom

#create notifier
nManager = notifications.ToastNotificationManager
notifier = nManager.create_toast_notifier();

#define your notification as string
tString = """
<toast>
    <visual>
        <binding template='ToastGeneric'>
            <text>Sample toast</text>
            <text>Sample content</text>
        </binding>
    </visual>
</toast>
"""

#convert notification to an XmlDocument
xDoc = dom.XmlDocument()
xDoc.load_xml(tString)

#display notification
notifier.show(notifications.ToastNotification(xDoc))
但是,当我尝试运行它时,它会返回此错误。
    notifier = notifications.ToastNotificationManager.create_toast_notifier()
RuntimeError: Element not found.
我的系统满足winrt的要求
Windows 10, October 2018 Update or later.
Python for Windows, version 3.7 or later
pip, version 19 or later
我该如何解决这个错误?我不能使用其他模块,因为 winrt 是唯一一个(据我所知),您可以在其中创建按钮等通知上的 ui 元素。

最佳答案

我刚刚解决了关于摆脱错误但未显示通知的相同问题。
这个Microsoft doc建议“重要您必须在每次调用 CreateToastNotifier 时在开始屏幕上包含应用程序快捷方式的 AppUserModelID。如果您不这样做,则不会显示您的 toast。”
然后我按照我找到的说明进行操作 here找到 AppUserModelID 原来是我的 Python 可执行文件的完整路径。
例如:

notifier = nManager.create_toast_notifier("C:\\...\\Programs\\Python\\Python38\\python.exe")

关于python - 当我尝试使用 winrt 发出通知时,它会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64231605/

相关文章:

c# - a == b == c C# 与 Python 中的三重比较

c# - 在 C# 中获取 Windows 电源计划/方案(使用 WinAPI)

java - 如果我只知道SID,如何更改Windows中的文件ACL?

notifications - 使用 Azure 服务总线通知中心取消注册标签

ios - Azure 通知,注册设备服务器端。适用于 FCM 但不适用于 APNS 的通知

python - Numpy 中的平铺

python - 创建一个小 flask 网站的PEX

Python/PyHive - 从异常中提取特定的错误消息

java - 如何使用 Java/JSP 或 javascript 通过互联网浏览器获取 Windows 用户名?

java - 黑莓通知消息问题