Такая проблема возникла:
Есть класс трей иконки
from PyQt5.QtWidgets import * from PyQt5.QtGui import * class SystemTrayIcon(QSystemTrayIcon): def __init__(self, parent=None): QSystemTrayIcon.__init__(self, parent) # создаем трей иконку self.setObjectName('trayIcon') self.setIcon(QIcon(".data/img/Application-icon-wob.png")) self.activated.connect(self.onTrayIconActivated) self.installEventFilter(self) self.show() def onTrayIconActivated(self, event): if event == QSystemTrayIcon.DoubleClick: pass elif event == QSystemTrayIcon.Context: qApp.quit()
from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtMultimedia import * from PyQt5.QtGui import * from functions.main_funcs import (getScreen) import configparser import webbrowser class ProfileForm(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowFlags(Qt.FramelessWindowHint | Qt.Tool) # окно без рамок и заголовка, не отображается на панели задач self.setAttribute(Qt.WA_TranslucentBackground) # прозрачный бек окна self.setFixedSize(330, 220) self.setObjectName('ProfileForm') QFontDatabase.addApplicationFont(".data/fonts/Micra_Normal.ttf") self.config = configparser.ConfigParser() self.config.read('config.ini') # тут много дальше всего не суть важно... # показываем окно self.show() def close(self): self.hide()
И собственно файл запуска программы
from os import * from forms.profile_form import ProfileForm from forms.systray import SystemTrayIcon from functions.main_funcs import * import sys if __name__ == '__main__': pid = getpid() # запись процесса # проверяем наличие конфига и создаем если его нет if path.exists('config.ini') == False: createConfig() # Создаем приложение app = QApplication(sys.argv) # Загружаем форму профиля ProfileForm = ProfileForm() # Загружаем трей иконку tray = SystemTrayIcon() # Выполняем запуск приложения sys.exit(app.exec_())
Как в трей иконке при дабл клике
def onTrayIconActivated(self, event): if event == QSystemTrayIcon.DoubleClick: pass
Пробовала и через глобалс
типа:
if event == QSystemTrayIcon.DoubleClick: global ProfileForm ProfileForm.close()
и через наследование
from PyQt5.QtWidgets import * from PyQt5.QtGui import * from forms.profile_form import ProfileForm class SystemTrayIcon(QSystemTrayIcon,ProfileForm): def __init__(self, parent=None): QSystemTrayIcon.__init__(self, parent) # создаем трей иконку self.setObjectName('trayIcon') self.setIcon(QIcon(".data/img/Application-icon-wob.png")) self.activated.connect(self.onTrayIconActivated) self.installEventFilter(self) self.show() def onTrayIconActivated(self, event): if event == QSystemTrayIcon.DoubleClick: ProfileForm.close() elif event == QSystemTrayIcon.Context: qApp.quit()
выдает вобоих случаях
Вообще не врублюсь как получить доступ к форме))