@kramick

Почему закрывается второе окно PyQT?

Создал основное окно. Добавил меню сверху и для одного из QAction (одного из пунктов) добавил действие, но второе окно не открывается... Точнее сказать, открывается, но очень быстро закрывается, иногда это заметно. Как мне решить проблему?

from PyQt5 import QtCore, QtGui, QtWidgets
from Information.GUI.gui_info import Ui_About
# куча кода основного класса
# куча кода основного класса
# куча кода основного класса

class Information(QtWidgets.QMainWindow, Ui_About):
    """Класс со вторым окном"""
    def __init__(self):
        super().__init__()
        self.setupUi(self)

class Main(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)

        self.about_act.triggered.connect(self.onClicked)

    def onClicked(self):    # сама функция для показа
        about = Information()
        about.show()

def start_app(name_class):
    import sys
    app = QtWidgets.QApplication(sys.argv)
    window = name_class()
    window.show()
    app.exec_()


if __name__ == '__main__':
    start_app(Main)
  • Вопрос задан
  • 1023 просмотра
Решения вопроса 1
@bbkmzzzz
def onClicked(self):    # сама функция для показа
        about = Information()
        about.show()

После завершения функции все локальные переменные уничтожаются. Сохраните ссылку на новое окно в основной класс

class Information(QtWidgets.QMainWindow):  # не надо наследоваться от двух классов сразу
    """Класс со вторым окном"""

    def __init__(self):
        super().__init__()
        self.ui = Ui_About()
        self.ui.setupUi(self)

        self.information_window = Information() # если передать родителя, и установить Modality = True, окно будет модальным

    def onClicked(self):    # сама функция для показа
        self.information_window.show()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы