---June 16, 2020, 6:42 a.m.

Всплывающие уведомления в 10 строчек на Python

Content

Введение

Мы часто используем 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'е, определенно это был не единственный способ. Существует достаточное количество библиотек которые выполняют подобные цели.

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.

Comments

Only authorized users can post comments.
Please, Log in or Sign up
How to become an author?

Contribute to the evolution of the EVILEG community.

Learn how to become a site author.

Learn it
Donate

Good day, Dear Users!!!

I am Evgenii Legotckoi, developer of EVILEG. And it is my hobby project, which helps to learn programming another programmers and developers

If the site helped you, and you want also support the development of the site, than you can donate by following ways

PayPalYandex.Money
Timeweb

Let me recommend you the excellent hosting on which EVILEG is located.

For many years, Timeweb has been proving his stability.

For projects on Django I recommend VDS hosting

View Hosting
R

C++ - Test 002. Constants

  • Result:75points,
  • Rating points2
R

C++ - Test 001. The first program and data types

  • Result:73points,
  • Rating points1
MS

C++ - Test 005. Structures and Classes

  • Result:75points,
  • Rating points2
Last comments
R

Qt WinAPI - Lesson 001. How to collect all DLL, which used in Qt project?

Вы меня не совсем правильно поняли, но все равно спасибо, принял все к сведению. Все сделал как вы сказали, все отлично работает, еще раз огромнейшее спасибо) Разве что только что были опять про…

Qt WinAPI - Lesson 001. How to collect all DLL, which used in Qt project?

Стоило перед использованием что ли инструкцию прочитать https://www.cyberforum.ru/blogs/131347/blog2457.html "После сборки при запуске требовались dll," Ясное дело стоило задепло…
R
R

Qt WinAPI - Lesson 001. How to collect all DLL, which used in Qt project?

Да, собралось. После сборки при запуске требовались dll, перекинул всю папки bin, plugins(не знаю как можно было сделать более умно). Как я понял в первой строке путь к екзешнику вставляю, втор…

Android. Java vs Qt QML - Tutorial 000. Enable Material Design

Это актуально для изменения цвета. В файле qtquickcontrols2.conf переменная Primary должна влиять на цвет приложения соответственно и цвет ApplicationBar должен поменяться. Но у status bar вроде…
Now discuss on the forum
A

Как в Qt в qmenu добавить scrollarea

Добрый день. Мое имя Кристина. Познакомлюсь с другом для встречи. Приеду к тебе в гости или встримся у меня. Живу близко. Мой адрес

Qt C++ и Python

Красиво/некрасиво - это скорее моё личное отношение. Если есть возможность ограничить количество интсрументов, то лучше ограничить. Но не зацикливайтесь на этом. Если у вас есть скрипты Py…

Qt + OpenGL glDeleteVertexArrays

Я не уверен, поскольку с OpenGL очень мало работал. Но может быть OpenGL контекст виджета нужно переинициализовывать. И ещё виджет стоит удалять через метод deleteLater() а не п…

QWebEngineView не запускается если к ПК подключено несколько мониторов

Ну я имел ввиду посмотреть на другом ПК с другой графикой и парой мониторов. Как моей программе назначить использовать определенный граф. адаптер? Вот тут понятия не имею.

Счечик производительности сети

Хорошо. После работы сегодня гляну ваш код внимательно.
About
Services
© EVILEG 2015-2020
Recommend hosting TIMEWEB