На этот раз, хочется создать что-то полезное и красивое. Пойдем по классике и напишем на python код виджета стрелочных часов, без цифр, с дублирующими цифровыми часами. Если мне не изменяет память, подобный виджет был когда-то на windows 7 – простой, но красивый.
В качестве фреймворка для графической части виджета выбран pyqt5, т к при попытке сделать виджет в tkinter получалось не очень красиво. Контур часов выглядел как-то несуразно, с крупной пикселизацией. В pyqt5 формы виджета сглаженные и аккуратные.
Виджет полностью прозрачен, а также проницаем для курсора мыши, т е сквозь него можно выделять или перемещать элементы рабочего стола. При этом, и сам виджет можно перемещать, удерживая левой клавишей мыши любой элемент интерфейса виджета.
Оболочка windows для окна виджета отключена, но в самом виджете предусмотрена кнопка выхода, а также разработано контекстное меню трэя с тремя функциями: свернуть, развернуть и выход. Иконка трэя рисуется непосредственно в программе, ведь, на мой взгляд здорово, когда все ресурсы приложения создаются внутри этого приложения.
Изучая код написания этого виджета вы научитесь:
1. Само-собой применять некоторые виджеты PyQt5, такие как QPushButton, QPainter, QMenu и т д.
2. Пользоваться временем, как бы странно это не звучало))) Виджет у нас представляет собой динамическое, т е меняющееся во времени, приложение.
3. Рисовать иконку приложения внутри самого приложения. Да и вообще рисовать в QPainter.
4. Делать окна прозрачными и проницаемыми для курсора мыши.
5. Работать с различными событиями (event).
Текстовый код с подробным описанием виджета вы найдете в: https://sergsergius.ru/%d0%ba%d0%b0%d0%ba-%d0%b2-python-pyqt5-%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d1%82%d1%8c-%d0%b2%d0%b8%d0%b4%d0%b6%d0%b5%d1%82-%d1%81%d1%82%d1%80%d0%b5%d0%bb%d0%be%d1%87%d0%bd%d1%8b%d1%85-%d1%87%d0%b0%d1%81/
Это, скажем так, альфа версия виджета. В будущем, планирую его дополнить каким-нибудь полезным функционалом, о чем в других статьях отпишусь. Поэтому подписывайтесь, чтобы не пропустить. Ставьте лайки, если виджет зашел.