#python #python-3.x #windows #notifications #toast
Вопрос:
У меня проблема с уведомлениями о тостах Python и Windows 10. Что я хотел бы сделать, так это тост Windows, который может быть доступен для кликабельности И который появится в центре уведомлений, если я не нажму на него.
Я знаю о существовании обоих win10toast
и win10toast-click
. Проблема в том, что win10toast
не поддерживается callback_on_click
и win10toast-click
не поддерживает Duration=None
параметр, который позволяет уведомлению переходить в Центр уведомлений, если его не щелкнуть. Я хотел бы найти простой способ сделать и то, и другое, но, к сожалению, не могу, так как у меня нет навыков, необходимых для объединения этих двух библиотек.
Вот код :
from win10toast-click import ToastNotifier
def test():
print('test')
toast = ToastNotifier()
toast.show_toast(
'Notification title',
'Notification body',
duration=None,
icon_path='icon.ico',
callback_on_click=test
) # Does not stand in the Notification Center
from win10toast import ToastNotifier
def test():
print('test')
toast = ToastNotifier()
toast.show_toast(
'Notification title',
'Notification body',
duration=None,
icon_path='icon.ico'
) # Stands in the Notification Center but does not support callback
У кого-нибудь из вас есть идея ?
Заранее спасибо…
Комментарии:
1. сначала я бы покопался в исходном коде, чтобы посмотреть, как это работает. Может быть, ему нужно только скопировать какую-то часть из одной функции в другую. Я ожидаю, что это может быть проще скопировать
callback_on_click
, потомуduration
что может потребоваться какой-то таймер, который, возможно, придется запустить,thread
и в нем может быть больше кода.2. у вас есть код для win10toast-нажмите и win10toast , и
duration
, похоже, разница толькоif duration is not None:
в этом . Но для меня это выглядит так, как будтоwin10toast-click
должно поддерживатьduration=None
иwin10toast
должно вызывать ошибку, потому что оно попытается запуститьsleep(None)
3. @furas Да, win10toast действительно вызывает эту ошибку, но для щелчка win10toast, да, ошибка не возникает, но она исчезает вместо того, чтобы перейти в Центр уведомлений
4. может быть, это подсказка — когда она вызывает ошибку, она не может закрыть ее и переходит в Центр уведомлений — так что это ошибка, а не официальный метод.
5. Я думаю, что если вы удалите
if duration is not None:
изwin10toast-click
этого, это тоже вызовет ошибку, и, возможно, это будет работать, как вwin10toast
Ответ №1:
Итак, для тех, у кого такая же проблема, как у меня, я только что нашел идеальное решение, которое делает все, что вы намереваетесь.
Недавно появилась библиотека winotify, которая находится в центре уведомлений, ЛЕГКО НАСТРАИВАЕТСЯ и может открывать ссылки на ваш браузер по умолчанию.
Выбросьте win10toast
и идите за winotify
!
Исходный код: страница winotify на GitHub