При запуске объемной задачи обычно приходится работать над чем-то другим. Непродуктивно ждать, пока задание завершится.
Поэтому, чтобы избежать необходимости ждать ее завершения, может быть удобно, чтобы Python сам посылал уведомление на рабочий стол о завершении задачи.
Для отправки уведомлений на рабочий стол с помощью Python вы можете использовать пакет plyer в Windows и Linux, в то время как на Mac это требует немного больше работы.
Содержание
Создание уведомления с помощью plyer
Одним из наиболее используемых пакетов Python для создания уведомлений является plyer. Пакет, который, как обычно, можно установить с помощью pip.
pip install plyer
После установки пакета вы можете импортировать функцию уведомления из пакета для создания уведомлений. Таким образом, для создания базового уведомления достаточно написать код:
from plyer import notification
notification.notify(
title='Завершение моделирования',
message='Моделирование завершено')
Code language: JavaScript (javascript)
Расширенные опции notification
Функция notification пакета plyer имеет следующие параметры, с помощью которых можно изменить поведение уведомлений.
- title: Заголовок уведомления
- message: Сообщение уведомления
- app_name: имя приложения, инициирующего данное уведомление
- app_icon: иконка, которая будет отображаться вместе с сообщением
- timeout: время отображения сообщения, по умолчанию – 10 секунд.
- ticker: текст, который будет отображаться в строке состояния при поступлении уведомления
- toast: простое сообщение вместо полного уведомления
В дополнение к параметрам title и message, возможно, самым интересным является app_icon.
Это свойство используется для изменения иконки уведомления, что облегчает идентификацию уведомлений, запускаемых нашей программой.
Для этого вам нужен только файл в формате ico, путь к которому должен быть указан этим параметром. Это показано в следующем примере.
notification.notify(
title='Окончание моделирования',
message='Моделирование завершено',
app_icon='python.ico',
timeout = 15)
Code language: JavaScript (javascript)
Уведомления в macOS
В случае запуска приведенного выше кода на macOS мы столкнемся с ошибкой, похожей на AttributeError: ‘NoneType’ object has no attribute ‘setDelegate_’, вместо уведомления. Это связано с тем, что в настоящее время plyer не может быть использован на macOS.
Однако эту проблему можно легко решить, поскольку на macOS можно отправлять уведомления.
Доступ к нему можно получить с помощью функции os.system().
import os
title = 'Окончание моделирования'
message = 'Моделирование завершено'
os.system("osascript -e 'display notification \"{}\" with title \"{}\"'".format(message, title))
Code language: JavaScript (javascript)
Мультиплатформенные уведомления
Возможно, при написании кода мы не знаем, в какой операционной системе он будет выполняться. К счастью, можно спросить Python, на какой платформе мы работаем, используя platform.system().
В случае macOS он вернет ‘Darwin’, поэтому следующая функция действительна как в Windows, так и в macOS.
import os
import platform
from plyer import notification
def notify(message, title):
if platform.system() == 'Darwin':
os.system("osascript -e 'display notification \"{}\" with title \"{}\"'".format(message, title))
else:
notification.notify(
title=title,
message=message,
app_icon='python.ico')
notify('Моделирование завершено', 'Окончание моделирования')
Code language: JavaScript (javascript)
Заключение
Мы рассмотрели, как отправлять уведомления на рабочий стол с помощью Python как в Windows, так и в macOS. Инструмент, который может быть полезен, когда у нас есть сценарии, требующие времени на выполнение, и мы не хотим знать об их завершении.