Уведомление в Python без остановки скрипта - PullRequest
0 голосов
/ 31 марта 2019

Я писал код, используя python и opencv. Если лицо не обнаружено, он должен уведомить пользователя windows10. Я использовал win10toast

import time
from win10toast import ToastNotifier

notif = ToastNotifier()

notif.show_toast(title= "Nusrat", msg= "One baby is missing")
time.sleep(10)

но он останавливает код при отображении уведомления. Есть ли способ показать уведомление с помощью графического интерфейса или чего-то еще, но это не остановит код?

1 Ответ

0 голосов
/ 03 апреля 2019

Репозиторий Github библиотеки показывает, как избежать блокировки в примере целевой страницы:

from win10toast import ToastNotifier
import time

toaster = ToastNotifier()

toaster.show_toast("Example two",
               "This notification is in it's own thread!",
               icon_path=None,
               duration=5,
               threaded=True)
# Wait for threaded notification to finish
while toaster.notification_active(): time.sleep(0.1)

Вам необходимо добавить параметр threaded=True. Спящий режим необходим только в том случае, если вы хотите проверить, активно ли уведомление.

Отображение уведомления не операция блокировки. Код библиотеки вызывает сон, равный duration, перед закрытием окна:

# take a rest then destroy
sleep(duration)
DestroyWindow(self.hwnd)
UnregisterClass(self.wc.lpszClassName, None)

threaded=True выполнит поток show/sleep/destroy в отдельном потоке. Честно говоря, есть более чистые способы сделать это, например, использовать таймер одноразового использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...