PySide6

Форк
0
/
11_systray.py 
84 строки · 7.1 Кб
1
"""
2
Пример создания иконки для лотка (трея) панели задач с привязкой к ней меню действий.
3
В данном примере представлено приложение без главного окна (вообще без окон).
4
"""
5
import sys
6
from PySide6.QtWidgets import (QApplication,
7
                               QColorDialog,
8
                               QMenu,
9
                               QSystemTrayIcon
10
                               )
11
from PySide6.QtGui import QAction, QIcon
12

13
"""
14
Модуль os нужен для создания путей к файлам для разных платформ.
15
Модуль sys нужен для доступа к аргументам командной строки. Если использование аргументов
16
командной строки не предполагается, то импорт можно не выполнять. При этом, при создании
17
приложения в класс QApplication([]) в качестве аргумента передается пустой список.
18
Импорт из модуля QtCore класса QSize для управления размерами объектов и класса
19
Qt - содержит различные идентификаторы, используемые в библиотеке Qt
20
Импорт из модуля QtWidgets PySide6 класса для управления приложением QApplication, класса виджета
21
диалогового окна выбора цвета, класса виджета панели инструментов меню, класса виджета иконки
22
для лотка (трея) панели задач QSystemTrayIcon.
23
Импорт из модуля QtGui класса эффектов действия QAction, класса для создания иконок QIcon.
24
Другие виджеты можно найти по ссылке https://doc.qt.io/qt-5/widget-classes.html#basic-widget-classes
25
"""
26

27

28
def copy_color_hex() -> None:
29
    """
30
    Функция, запускающая диалоговое окно выбора цвета
31
    :return: None
32
    """
33
    if dialog.exec():  # данная конструкция запускает диалог выбора цвета и в случае успеха производит действия
34
        color = dialog.currentColor()  # записывает в переменную параметры выбранного цвета
35
        clipboard.setText(color.name())  # передает в буфер обмена параметры выбранного цвета
36

37

38
def copy_color_rgb() -> None:
39
    """
40
    Функция, запускающая диалоговое окно выбора цвета
41
    :return: None
42
    """
43
    if dialog.exec():  # данная конструкция запускает диалог выбора цвета и в случае успеха производит действия
44
        color = dialog.currentColor()  # записывает в переменную параметры выбранного цвета
45
        clipboard.setText(f'rgb({color.red()}, {color.green()}, {color.blue()})')
46
        # передает в буфер обмена параметры выбранного цвета
47

48

49
def copy_color_hsv() -> None:
50
    """
51
    Функция, запускающая диалоговое окно выбора цвета
52
    :return: None
53
    """
54
    if dialog.exec():  # данная конструкция запускает диалог выбора цвета и в случае успеха производит действия
55
        color = dialog.currentColor()  # записывает в переменную параметры выбранного цвета
56
        clipboard.setText(f'hsv({color.hue()}, {color.saturation()}, {color.value()})')
57
        # передает в буфер обмена параметры выбранного цвета
58

59

60
app = QApplication(sys.argv)  # Создание экземпляра класса основного цикла событий приложения.
61
app.setStyle('Fusion')  # более интересная глобальная кроссплатформенна тема Fusion
62
app.setQuitOnLastWindowClosed(False)  # отключает закрытие приложения при закрытии всех его окон
63
# т.е. при закрытии всех окон приложения оно остается запущенным
64
clipboard = QApplication.clipboard()  # создание буфера обмена
65
dialog = QColorDialog()  # создание экземпляра класса диалогового окна выбора цвета
66
icon = QIcon('icon.png')  # создание иконки из графического файла
67
tray = QSystemTrayIcon()  # создание экземпляра класса виджета иконки для лотка (трея) панели задач
68
tray.setIcon(icon)  # привязка иконки к виджету иконки для панели задач
69
tray.setVisible(True)  # разрешение видимости иконки для панели задач
70
menu = QMenu()  # создание экземпляра класса виджета меню
71
action1 = QAction('Hex')  # создание экземпляра класса эффекта действия с указанием его наименования
72
action1.triggered.connect(copy_color_hex)  # создание сигнала с привязкой ресивера для пункта меню
73
menu.addAction(action1)  # размещение эффекта действия в меню
74
action2 = QAction('RGB')  # создание экземпляра класса эффекта действия с указанием его наименования
75
action2.triggered.connect(copy_color_rgb)  # создание сигнала с привязкой ресивера для пункта меню
76
menu.addAction(action2)  # размещение эффекта действия в меню
77
action3 = QAction('HSV')  # создание экземпляра класса эффекта действия с указанием его наименования
78
action3.triggered.connect(copy_color_hsv)  # создание сигнала с привязкой ресивера для пункта меню
79
menu.addAction(action3)  # размещение эффекта действия в меню
80
quit_app = QAction('Quit')  # создание экземпляра класса эффекта действия с указанием его наименования
81
quit_app.triggered.connect(app.quit)  # создание сигнала с командой на выход из приложения
82
menu.addAction(quit_app)  # размещение эффекта действия в меню
83
tray.setContextMenu(menu)  # установка созданного меню как контекстного меню
84
app.exec()  # Запуск основного цикла событий главного окна приложения.
85

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.