Доброго здоровья читателям моего канала programmer's notes. Подписываемся и ставим лайки.
Библиотека pystray, окно tkinter и пиктограмма в трее
Сегодня продолжении большой темы tkinter. Посмотрим как можно отправлять программу в tray, т.е. переводить её в значок в правом нижнем углу экрана.
Нам понадобиться модуль pystray. Установить его можно стандартным способом: pip3 install pystray.
Основной принцип работы с модулем pystray:
1. Создать объект Icon и начать опрос событий пиктограммы в трее. При необходимости скрыть основное окно.
2. Обрабатывать меню пиктограммы в трее. В частности для возвращения в исходную позицию выйти из опроса и визуализировать основное окно.
Программа ниже имеет в окне две кнопки (см. Рисунок 1). При нажатии кнопки В трей, в низу справа экрана появляется пиктограмма, а окно исчезает. При щелчке левой или правой кнопкой мыши по пиктограмме появляется меню. В котором есть два пункта Открыть — открывается основное окно и исчезает пиктограмма в трее, Выйти — полный выход из программы. Кнопка Выход, это обычный выход из программы.
Текст программы представлен на рисунке 2 и ниже по ссылке.
Пояснения к программе
- Окно создаётся обычными средствами tkinter, как объект tk.Tk.
- При нажатии кнопки в В трей создаётся объект Icon(), при этому указываются пункты меню и обработчик выбора пунктов меню;
- Затем скрывается основное окно: withdraw();
- И запускается цикл опроса событий пиктограммы в трее (run());
- При выборе любого из пунктов меню вызывается функция menu(). Функция получает два параметра: объект Icon и объект MenuItem;
- Свойство MenuItem.text как раз содержит название меню;
- Далее, при выборе пункта Открыть делаем пиктограмму в трее невидимой, прерываем цикл опроса и делаем основное окно видимым;
- При выборе пункта Выход прерываем цикл опроса и закрываем основное окно.
- Наконец отмечу используемую для создания пиктограммы библиотеку Pillow. В своё время мы подробно разбирали эту библиотеку. Здесь список всех статей по ней.
Внимание
Данная программа проверена в операционной системе Alt Linux. Не факт, что всё будет корректно работать в Windows. Если сподоблюсь проверить, то напишу.
Статья об аналогичных возможностях приложений на основе PyQt5 здесь.
Пока всё!
Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.