PyQt5. При закрытии дочернего окна, закрывается основное, когда свернуто в трей
Программирую на Python с использованием PyQt5. Есть у меня два класса. В основном классе для обработки закрытия окна объявлены такие методы:
def trayIconActivated(self, reason):
if reason == QSystemTrayIcon.Trigger:
if self.isHidden():
self.show()
else:
self.hide()
def closeEvent(self, event):
event.ignore()
self.hide()
В конструкторе добавил это:
self.tray_icon = QSystemTrayIcon(self)
self.tray_icon.setIcon(QIcon("res\\icon.ico"))
self.tray_menu = QMenu()
show_action = QAction("Показать", self)
show_action.triggered.connect(self.show)
self.tray_menu.addAction(show_action)
exit_action = QAction("Выход", self)
exit_action.triggered.connect(app.quit)
self.tray_menu.addAction(exit_action)
self.tray_icon.setContextMenu(self.tray_menu)
self.tray_icon.show()
self.tray_icon.activated.connect(self.trayIconActivated)
Повторю, это в основном классе и к другому отношения не имеет. При определенных событиях у меня открывается окно - экземпляр другого класса. Но есть одна проблема, найти решение которой не смог. Если основное окно свернуто в трей, то закрытие дочерней формы, в которой вообще не реализован выход, завершается работа всего приложения. Добавлял это в closeEvent, но оно никак не влияет:
if self.tray_icon.isVisible():
event.ignore()
self.hide()
else:
event.accept()
Есть ли предположения, из-за чего происходит не преднамеренный выход из программы?