Что касается win10toast и win10toast-click, у меня проблема с Центром уведомлений

#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