Контекст:
У меня есть два файла Uno.py
и Dos.py
между которыми я стараюсь реализовывать циклический импорт, в одном из них у меня есть одна QMainWindow
и в другом один QDialog
, нажав кнопку настоящее окно должно закрываться и открывать окно другого файла.
Проблема:
Проблема состоит, в том, что нажав на кнопку, не закрывается окно и выходит следующее сообщение:
QCoreApplication::exec: The event loop is already running
Я присоединяю пример:
Намерение состоит, в том, чтобы нажав на кнопку, открылось другое окно и закрылась настоящая и наоборот
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()
Проблема не та 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_()