@Devil_Evil2021

Как связать файлы.py между собой?

Есть 4 файла: AuthorForm.py, ProjectForm.py, PassOptionsForm.py и OptionsForm.py.
В AuthorForm.py есть кнопка, которая открывает ProjectForm.py, а в нём есть кнопка, чтобы открыть PassOptionsForm.py и т.д. Но получается так, что если запустить AuthorForm.py, то по кнопке открывается ProjectForm.py, а его кнопка уже не работает, чтобы открыть PassOptionsForm.
Если же запускать файлы отдельно, то есть, например, ProjectForm.py и нажать на кнопку, то PassOptionsForm.py откроется и так с каждым файлом.
Как связать файлы между собой, чтобы открыв AuthorForm.py, я мог бы по кнопкам из других файлов(окон) открыть окно OptionsForm.py.
Код практически идентичен во всех файлах.
Код AuthorForm.py:
# -*- coding: utf-8 -*-
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMessageBox
from ProjectUIForm import Ui_Form as Ui_F_Project

class Ui_Form(object):
    def setupUi(self, Form):
        ...

    def retranslateUi(self, Form):
        ...

class ProjectPrg(QtWidgets.QWidget, Ui_F_Project):
    def __init__(self, parent=None):
        super(ProjectPrg, self).__init__(parent)
        self.setupUi(self)

class Main(QtWidgets.QWidget, Ui_Form): 
    def __init__(self, parent=None):
        super(Main, self).__init__(parent)
        self.setupUi(self)
        self.auth_btn.clicked.connect(self.OpenProject)

    def OpenProject(self):
        l = "admin"
        p = "password"
        msg = QMessageBox(self)
        if self.lineLOGIN.text() == l and self.linePASS.text() == p:
            self.FProj = ProjectPrg()
            self.FProj.show()
        elif self.lineLOGIN.text() == "" and self.linePASS.text() == "":
            msg.about(self, "Ошибка", "Введите логин и пароль.")
        else:
            msg.about(self, "Ошибка", "Вы ввели неверный логин или пароль.")

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)

    w = Main()
    w.show()

    sys.exit(app.exec_())


Код ProjectForm.py:
# -*- coding: utf-8 -*-
from PyQt5 import QtCore, QtGui, QtWidgets
from PassOptionsForm import Ui_Form as Ui_F_PassOpt

class Ui_Form(object):
    def setupUi(self, Form):
        ...

    def retranslateUi(self, Form):
        ...

class PassOptionsPrg(QtWidgets.QWidget, Ui_F_PassOpt):
    def __init__(self, parent=None):
        super(PassOptionsPrg, self).__init__(parent)
        self.setupUi(self)

class Main(QtWidgets.QWidget, Ui_Form): 
    def __init__(self, parent=None):
        super(Main, self).__init__(parent)
        self.setupUi(self)

        self.btnOpenOpt.clicked.connect(self.onClicked)

    def onClicked(self):
        
        self.FPassOpt = PassOptionsPrg()
        self.FPassOpt.show()

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)

    w = Main()
    w.show()

    sys.exit(app.exec_())


Ну и код PassOptionsForm.py:
# -*- coding: utf-8 -*-
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMessageBox
from OptionsForm import Ui_Form as Ui_F_Options

class Ui_Form(object):
    def setupUi(self, Form):
        ...

    def retranslateUi(self, Form):
        ...

class OptionsPrg(QtWidgets.QWidget, Ui_F_Options):
    def __init__(self, parent=None):
        super(OptionsPrg, self).__init__(parent)
        self.setupUi(self)

class Main(QtWidgets.QWidget, Ui_Form): 
    def __init__(self, parent=None):
        super(Main, self).__init__(parent)
        self.setupUi(self)

        self.openopt.clicked.connect(self.onClicked1)

    def onClicked1(self):
        l = "admin"
        p = "password"
        msg = QMessageBox(self)
        if self.lineLOGINopt.text() == l and self.linePASSopt.text() == p:
            self.FOpenOpt = OptionsPrg()
            self.FOpenOpt.show()
        elif self.lineLOGINopt.text() == "" and self.linePASSopt.text() == "":
            msg.about(self, "Ошибка", "Введите логин и пароль.")
        else:
            msg.about(self, "Ошибка", "Вы ввели неверный логин или пароль.")

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)

    w = Main()
    w.show()

    sys.exit(app.exec_())
  • Вопрос задан
  • 452 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

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