Найти в Дзене
programmer's notes (python and more)

Программирование на python. tkinter, пиктограмма в трее и модуль pystray

Доброго здоровья читателям моего канала programmer's notes. Подписываемся и ставим лайки.

Базовый курс программирования на Python | programmer's notes (python and more) | Дзен

Библиотека pystray, окно tkinter и пиктограмма в трее

Сегодня продолжении большой темы tkinter. Посмотрим как можно отправлять программу в tray, т.е. переводить её в значок в правом нижнем углу экрана.

Нам понадобиться модуль pystray. Установить его можно стандартным способом: pip3 install pystray.

Основной принцип работы с модулем pystray:

1. Создать объект Icon и начать опрос событий пиктограммы в трее. При необходимости скрыть основное окно.

2. Обрабатывать меню пиктограммы в трее. В частности для возвращения в исходную позицию выйти из опроса и визуализировать основное окно.

Программа ниже имеет в окне две кнопки (см. Рисунок 1). При нажатии кнопки В трей, в низу справа экрана появляется пиктограмма, а окно исчезает. При щелчке левой или правой кнопкой мыши по пиктограмме появляется меню. В котором есть два пункта Открыть — открывается основное окно и исчезает пиктограмма в трее, Выйти — полный выход из программы. Кнопка Выход, это обычный выход из программы.

Рисунок 1. Окно с кнопкой создать пиктограмму в трее
Рисунок 1. Окно с кнопкой создать пиктограмму в трее

Текст программы представлен на рисунке 2 и ниже по ссылке.

Рисунок 2. Программа работы с треем. Текст программы см. ниже по ссылке
Рисунок 2. Программа работы с треем. Текст программы см. ниже по ссылке
primer387.py

Пояснения к программе

  • Окно создаётся обычными средствами tkinter, как объект tk.Tk.
  • При нажатии кнопки в В трей создаётся объект Icon(), при этому указываются пункты меню и обработчик выбора пунктов меню;
  • Затем скрывается основное окно: withdraw();
  • И запускается цикл опроса событий пиктограммы в трее (run());
  • При выборе любого из пунктов меню вызывается функция menu(). Функция получает два параметра: объект Icon и объект MenuItem;
  • Свойство MenuItem.text как раз содержит название меню;
  • Далее, при выборе пункта Открыть делаем пиктограмму в трее невидимой, прерываем цикл опроса и делаем основное окно видимым;
  • При выборе пункта Выход прерываем цикл опроса и закрываем основное окно.
  • Наконец отмечу используемую для создания пиктограммы библиотеку Pillow. В своё время мы подробно разбирали эту библиотеку. Здесь список всех статей по ней.

Внимание
Данная программа проверена в операционной системе Alt Linux. Не факт, что всё будет корректно работать в Windows. Если сподоблюсь проверить, то напишу.

Статья об аналогичных возможностях приложений на основе PyQt5 здесь.

Пока всё!

Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.

Я что, должен программу на подносе вам приносить?
Я что, должен программу на подносе вам приносить?