Есть 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_())