Циклический импорт QCoreApplication:: exec: The event loop is already running

Контекст:

У меня есть два файла Uno.py и Dos.py между которыми я стараюсь реализовывать циклический импорт, в одном из них у меня есть одна QMainWindow и в другом один QDialog, нажав кнопку настоящее окно должно закрываться и открывать окно другого файла.

Проблема:

Проблема состоит, в том, что нажав на кнопку, не закрывается окно и выходит следующее сообщение:

QCoreApplication::exec: The event loop is already running

Я присоединяю пример:

introducir la descripción de la imagen aquí

Намерение состоит, в том, чтобы нажав на кнопку, открылось другое окно и закрылась настоящая и наоборот

Uno.py

from PyQt5.QtWidgets import QMainWindow,QApplication,QPushButton

class Class_Uno(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)

        self.Boton = QPushButton(self)
        self.Boton.setText("Presioname")
        self.Boton.clicked.connect(self.Conexion)

    def Conexion(self):
        from Dos import Class_Dos
        self.dos = Class_Dos()
        self.dos.show()
        self.close()


app = QApplication([])
cu = Class_Uno()
cu.show()
app.exec_()

Dos.py

from PyQt5.QtWidgets import QDialog,QApplication,QPushButton

class Class_Dos(QDialog):
    def __init__(self):
        QDialog.__init__(self)

        self.BotonDos = QPushButton(self)
        self.BotonDos.setText("Presioname 2")
        self.BotonDos.clicked.connect(self.Conectar)
        self.resize(300,200)

    def Conectar(self):
        from Uno import Class_Uno
        self.uno = Class_Uno()
        self.uno.show()
        self.close()

0
задан 06.11.2019, 02:26
1 ответ

Проблема не та importaciГіn cГ-clica но каждый раз, когда ты импортируешь Один ты выполняешь:

app = QApplication([])
cu = Class_Uno()
cu.show()
app.exec_()

, Где ты создаешь нового QApplicatiГіn, но Qt это запрещает. Так что возможный один soluciГіn состоит в том, чтобы использовать if __name__ == '__main__': для того, чтобы только был выполнен единственный раз (для mГЎs informaciГіn он читает этот ответ ).

from PyQt5.QtWidgets import QMainWindow,QApplication,QPushButton

class Class_Uno(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)

        self.Boton = QPushButton(self)
        self.Boton.setText("Presioname")
        self.Boton.clicked.connect(self.Conexion)

    def Conexion(self):
        from Dos import Class_Dos
        self.dos = Class_Dos()
        self.dos.show()
        self.close()


if __name__ == '__main__':

    app = QApplication([])
    cu = Class_Uno()
    cu.show()
    app.exec_()
1
ответ дан 01.12.2019, 12:36

Теги

Похожие вопросы