Я создаю простое приложение, используя QtDesigner. Моя цель состояла в том, чтобы открыть первый экран, созданный с помощью дизайнера (Ui_psi_screen), затем после нажатия на кнопку закрыть его и сразу же открыть второй экран (Ui_sdq_screen), и, в этом случае проблема, сделать то же самое с кнопкой, которая открывает 3-й экран (Ui_indici_screen), но я не могу подключить этот третий экран так же, как для второго. Это основной python код:
from PyQt5 import QtCore, QtGui, QtWidgets
from UI_sdq import Ui_sdq_screen
from UI_indici import Ui_indici_screen
class Ui_psi_screen(object):
def openSdq(self):
self.window = QtWidgets.QMainWindow()
self.ui = Ui_sdq_screen()
self.ui.setupUi(self.window)
MainWindow.hide()
self.window.show()
def openIndici(self):
self.window = QtWidgets.QMainWindow()
self.ui = Ui_indici_screen()
self.ui.setupUi(self.window)
MainWindow.hide()
self.window.show()
def setupUi(self, psi_screen):
psi_screen.setObjectName("psi_screen")
psi_screen.resize(800, 605)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
self.avanti_psi = QtWidgets.QPushButton(self.centralwidget)
self.avanti_psi.setGeometry(QtCore.QRect(470, 530, 81, 23))
self.avanti_psi.setObjectName("avanti_psi")
self.avanti_psi.clicked.connect(self.openSdq)
self.retranslateUi(psi_screen)
QtCore.QMetaObject.connectSlotsByName(psi_screen)
def retranslateUi(self, psi_screen):
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_psi_screen()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
это второй экран, созданный с помощью QtDesigner (Ui_sdq_screen):
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'UI_sdq.ui'
#
# Created by: PyQt5 UI code generator 5.14.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
from UI_indici import Ui_indici_screen
from UI_psi import Ui_psi_screen
class Ui_sdq_screen(object):
def setupUi(self, sdq_screen):
...
self.Avanti_sdq = QtWidgets.QPushButton(self.centralwidget)
self.Avanti_sdq.setGeometry(QtCore.QRect(520, 520, 81, 23))
self.Avanti_sdq.setObjectName("Avanti_sdq")
self.Avanti_sdq.clicked(Ui_psi_screen.openIndici())
...
def retranslateUi(self, sdq_screen):
...
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Ui_sdq_screen = QtWidgets.QMainWindow()
ui = Ui_sdq_screen()
ui.setupUi(Ui_sdq_screen)
Ui_sdq_screen.show()
sys.exit(app.exec_())
И отсутствует экран, который при попытке при подключении таким же образом, как я делал раньше, приложение вылетает:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'UI_indici.ui'
#
# Created by: PyQt5 UI code generator 5.14.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_indici_screen(object):
def setupUi(self, indici_screen):
...
self.risultati_indici.setPalette(palette)
self.risultati_indici.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
self.risultati_indici.setObjectName("risultati_indici")
...
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Ui_indici_screen = QtWidgets.QMainWindow()
ui = Ui_indici_screen()
ui.setupUi(Ui_indici_screen)
Ui_indici_screen.show()
sys.exit(app.exec_())
Я не могу понять, почему приложение блокируется, когда я добавляю функцию к кнопке второго экрана. Кто-нибудь может мне помочь?