Называть класс с другого класса между 2 архивами

Не, если глава была правильной.

У меня есть 2 архива uno.py и dos.py намерение состоит в том, чтобы Вы смогли звонить в QMainWindow что в uno.py с dos.py, и звонить в QDIialog что в dos.py с uno.py

Проблема состоит, в том, что это после того, как старается сделать, в меня бросает ошибка, одинокая ошибка показывает, что у какого-то из 2 классов есть конфликт, но Вы не показываете, что.

Uno.py

from PyQt5.QtWidgets import QMainWindow,QApplication,QPushButton
from Dos import C_Dos #Esto genera el eror

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

        boton = QPushButton(self)
        boton.setText("Abrir")
        boton.clicked.connect(lambda:self.Abrir())

    def Abrir(self):
        print("ok")
        C_Dos().show()
        self.hide()

Dos.py

from PyQt5.QtWidgets import QDialog,QApplication,QPushButton
from Uno import Main  #Esto genera el error

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

        boton = QPushButton(self)
        boton.setText("Abrir")
        boton.clicked.connect(lambda:self.Abrir())

    def Abrir(self):
        print("ok")
        Main().show()
        self.close()


app = QApplication([])
c = C_Dos()
c.show()
c.resize(500,400)
app.exec_()

Traceback Uno.py

Traceback (most recent call last):
  File "C:\Users\Angel-Dell\Desktop\Uno.py", line 2, in <module>
    from Dos import C_Dos #Esto genera el eror
  File "C:\Users\Angel-Dell\Desktop\Dos.py", line 2, in <module>
    from Uno import Main  #Esto genera el error
  File "C:\Users\Angel-Dell\Desktop\Uno.py", line 2, in <module>
    from Dos import C_Dos #Esto genera el eror
ImportError: cannot import name 'C_Dos'

Process returned 1 (0x1)        execution time : 0.091 s
Presione una tecla para continuar . . .

Traceback Dos.py

Traceback (most recent call last):
  File "C:\Users\Angel-Dell\Desktop\Dos.py", line 2, in <module>
    from Uno import Main  #Esto genera el error
  File "C:\Users\Angel-Dell\Desktop\Uno.py", line 2, in <module>
    from Dos import C_Dos #Esto genera el eror
  File "C:\Users\Angel-Dell\Desktop\Dos.py", line 2, in <module>
    from Uno import Main  #Esto genera el error
ImportError: cannot import name 'Main'

Process returned 1 (0x1)        execution time : 0.089 s
Presione una tecla para continuar . . .
0
задан 05.11.2019, 14:16
1 ответ

у Тебя Есть проблема importaciГіn крестовый поход или cГ-clica . Это рыба, как которая он кусает себе очередь. Я рекомендую тебе давать этому беглый просмотр post , напечатанный в Pythond

Una soluciГіn смоги состоять aГ±adir третьим классом в том, чтобы сослался в два mГіdulos, что ты хочешь импортировать предотвращая таким образом ссылку между ними.

Ты cГіdigo переделанный segГєn возможный soluciГіn может быть следующий:

Uno.py

from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton

class Main(QMainWindow):
    def __init__(self,app):
        QMainWindow.__init__(self)

        boton = QPushButton(self)
        boton.setText("Abrir")
        boton.clicked.connect(app.abrirDialog)

Dos.py

from PyQt5.QtWidgets import QDialog,QPushButton

class C_Dos(QDialog):
    def __init__(self,app):
        QDialog.__init__(self)

        boton = QPushButton(self)
        boton.setText("Abrir")
        boton.clicked.connect(app.abrirMainWindow)

app.py

from PyQt5.QtWidgets import QApplication

#Ninguno de los dos modulos se conoce
from Uno import Main
from Dos import C_Dos

class App():
    def __init__(self):
        self.mainWindow = Main(self)
        self.mainWindow.setWindowTitle('Uno Main Window')
        self.dosDialog = C_Dos(self)
        self.dosDialog.setWindowTitle('Dos Dialog')
        self.mainWindow.show()
        self.mainWindow.resize(500,400)

    def abrirDialog(self):
        print("openning dialog")
        self.dosDialog.show()
        self.dosDialog.resize(500,400)
        print("closing main window")
        self.mainWindow.close()

    def abrirMainWindow(self):
        print("openning main window")
        self.mainWindow.show()
        print("closing dos dialog")
        self.dosDialog.close()

def main():
    qapp = QApplication([])
    app = App()
    qapp.exec_()


if __name__ == "__main__":
    main()
2
ответ дан 01.12.2019, 12:44