Я пытаюсь заставить 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 - единственный (о котором я знаю), где вы можете создавать элементы пользовательского интерфейса в уведомлении, такие как кнопки.
3 ответа
Исключение происходит из-за того, что вам нужно указать applicationID
в create_toast_notifier()
Как, например, create_toast_notifier("MyApplicationId")
.
Это также описано здесь, но на C #.
Этот метод работает для меня на Python 3.9.1
и pip 21.0.1
Откройте PowerShell , введите следующую команду get-StartApps
, она вернет Name
и AppID
См. Таблицу или изображение на imgur для справки.
Name AppID ---- ----- Calculator Microsoft.WindowsCalculator_8wekyb3d8bbwe!App
Это может быть удобно
-
get-StartApps | Where-Object {$_.Name -like '*Application Name*'}
-
get-StartApps | Where-Object {$_.Name -like '*Python*'}
-
Скопируйте / вставьте AppID
в create_toast_notifier("Microsoft.WindowsCalculator_8wekyb3d8bbwe!App")
Примере:
#create notifier
nManager = notifications.ToastNotificationManager
notifier = nManager.create_toast_notifier("Microsoft.WindowsCalculator_8wekyb3d8bbwe!App");
Я только что решил ту же проблему в отношении избавления от ошибки, но уведомление не отображается.
Затем я выполнил инструкции, которые нашел здесь, чтобы найти AppUserModelID, который оказался полным путем. в мой исполняемый файл Python.
Например:
notifier = nManager.create_toast_notifier("C:\\...\\Programs\\Python\\Python38\\python.exe")
Похожие вопросы
Связанные вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.