Окно разместить в панели инструментов Windows

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

Вот тут я хочу чтобы мое окно было


Ответы (1 шт):

Автор решения: S. Nick

QSystemTrayIcon Class

Современные операционные системы обычно предоставляют специальную область на рабочем столе, называемую системный трей или область уведомлений, где долго работающие приложения могут отображать значки и короткие сообщения. ... подробнее читаем здеяь https://doc.qt.io/qt-5/qsystemtrayicon.html#reimplemented-protected-functions

Как вариант, пример, с некоторыми комментариями, ниже:

import sys
from PyQt5.Qt import *


class MainWindow(QMainWindow):
    """ Чекбокс и иконки в системном трее. """

    def __init__(self):
        super().__init__()

        self.setMinimumSize(QSize(480, 80))             
        self.setWindowTitle("System Tray Application")  

        central_widget = QWidget(self)
        self.setCentralWidget(central_widget)

        # Важно! Добавьте флажок, который будет зависеть от поведения программы при закрытии окна
        self.check_box = QCheckBox('Minimize to Tray')

        grid_layout = QGridLayout(central_widget)         
        grid_layout.addWidget(
            QLabel("Приложение, которое можно свернуть в Tray", self), 0, 0)
        grid_layout.addWidget(self.check_box, 1, 0)
        grid_layout.addItem(QSpacerItem(
            0, 0, QSizePolicy.Expanding, QSizePolicy.Expanding), 2, 0)

        # инициализировать QSystemTrayIcon
        self.tray_icon = QSystemTrayIcon(self)
        self.tray_icon.setIcon(
            self.style().standardIcon(QStyle.SP_ComputerIcon))

        '''
              Определите и добавьте шаги для работы со значком в системном трее
            show - show window
            hide - hide window
            exit - exit from application
        '''
        show_action = QAction("Show", self)
        quit_action = QAction("Exit", self)
        hide_action = QAction("Hide", self)
        show_action.triggered.connect(self.show)
        hide_action.triggered.connect(self.hide)
        quit_action.triggered.connect(qApp.quit)
        tray_menu = QMenu()
        tray_menu.addAction(show_action)
        tray_menu.addAction(hide_action)
        tray_menu.addAction(quit_action)
        self.tray_icon.setContextMenu(tray_menu)
        self.tray_icon.show()

    # Переопределить closeEvent, чтобы перехватить событие закрытия окна
    # Окно будет закрыто только в том случае, если в поле(check_box) нет галочки
    def closeEvent(self, event):
        if self.check_box.isChecked():
            event.ignore()
            self.hide()
            self.tray_icon.showMessage(
                "Tray Program",
                "Application was minimized to Tray",
                QSystemTrayIcon.Information,
                2000
            )


if __name__ == "__main__":
    app = QApplication(sys.argv)
    mw = MainWindow()
    mw.show()
    sys.exit(app.exec())

введите сюда описание изображения

введите сюда описание изображения

введите сюда описание изображения

→ Ссылка