Введение
Мы часто используем print что-бы проследить за состоянием скрипта, или когда занимаемся отладкой. Вместо того, что-бы постоянно смотреть в окно терминала и ждать какой-то вывод, мы можем исползовать всплывающие уведомления как способ для просмотра вывода и параллельно с этим заниматься чем-то еще.
Сделать это совсем не сложно — мы будем использовать встроенные комманды нашей операционной системы для вывода уведомлений, просто запуская их через Python. Несколько строчек кода, и никаких сторонних модулей.
Mac OS
Следующая команда запускает AppleScript (встроенный скриптовый язык компании Apple) для уведомлений.
osascript -e 'display notification "Your message goes here" with title "Title"'
Если вы запустите эту комманду то увидите следующий результат:
Подробнее о самом скрипте:
Итак, если вы используете Mac OS, тогда вы можете выполнить следующий Python код:
import os title = "Готово" message = "Файл скачан" command = f''' osascript -e 'display notification "{message}" with title "{title}"' ''' os.system(command)
Запустив этот скрипт, вы увидите схожий результат как и выше.
Linux
Linux предлагает еще более простой вариант:
notify-send "Your message" "Title"
Аналогично тому, как мы выводили уведомление на Mac OS через os.system, так же можно поступить в Linux системе.
Windows
В Windows нет такой команды которая запускала бы уведомления как в Linux и Mac OS, но это все равно можно сделать с помощью библиотеки win10toast , сначала её нужно установить: pip install win10toast и теперь пример ее использования:
import win10toast toaster = win10toast.ToastNotifier() toaster.show_toast("Заголовок", "Описание уведомления")
Метод show_toast принимает и другие аргументы, но подробнее о них вы можете напрямую почитать - просто вызвав help передав ей объект функции о которой нужно узнать подробнее.
Делаем скрипт кросс-платформенным
Что-бы узнать какая система стоит на вашем компьютере используется команда system() из встроенной библиотеки platform . Для Mac OS эта команда возвращает строку "Darwin", для Linux "Linux", для Windows - "Windows", теперь, зная все это, можем поместить весь код в функцию push . Вот что получится:
import platform, os def push(title, message): plt = platform.system() if plt == "Darwin": command = ''' osascript -e 'display notification "{message}" with title "{title}"' ''' elif plt == "Linux": command = f''' notify-send "{title}" "{message}" ''' elif plt == "Windows": win10toast.ToastNotifier().show_toast(title, message) return else: return os.system(command)
Вывод
В статье было показано как вывести всплывающие уведомления на Python'е, определенно это был не единственный способ. Существует достаточное количество библиотек которые выполняют подобные цели.