Я создаю программу с PyQt5 и сделал в .py файлы для двух окон. Один из них - окно входа в систему, а другой - главное окно. Чтобы открыть программу, отдельная программа, main.py, вызовет подпрограмму в logInWindow.py, чтобы открыть это окно. Там есть кнопка, которая при нажатии должна закрыть окно входа в систему и открыть mainWindow.py, вызвав его. Главное окно открывается нормально, но окно входа не закрывается. Мне нужно, чтобы окно входа в систему закрывалось, как только главное окно было открыто. Не имеет значения, делает ли это до, во время или после открытия главного окна, но до тех пор, пока это происходит. Мне также нужно иметь возможность передавать значение из logInWindow в mainWindow из-за других частей программы. Я сделал упрощенную версию кода ниже.
Я пытался использовать такие вещи, как QtWidgets.QDialog (). Close () (которые были распознаны кодом), но на самом деле ничего не делал. Единственное, что закрывало его, это sys.exit (), но закрывало все это перед кодом строки, чтобы открыть mainWindow.
#main.py
import logInWindow
var1 = input("Start: ")
if var1 == 'y':
logInWindow.openUp()
#logInWindow.py
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
import mainWindow
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(400, 135)
self.pushButton = QtWidgets.QPushButton(Dialog)
self.pushButton.setGeometry(QtCore.QRect(110, 50, 161, 32))
self.pushButton.setBaseSize(QtCore.QSize(161, 32))
self.pushButton.setObjectName("pushButton")
self.pushButton.clicked.connect(self.buttonClick)
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def buttonClick(self):
#code to close logInWindow here
needsToBePassed = 'This is the main window.'
mainWindow.openUp2(needsToBePassed)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "logInWindow"))
self.pushButton.setText(_translate("Dialog", "open mainWindow"))
def openUp():
import sys
app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())
#mainWindow.py
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
def openUp2(passed):
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(400, 300)
self.label = QtWidgets.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(110, 130, 151, 16))
self.label.setObjectName("label")
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "mainWindow"))
self.label.setText(_translate("Dialog", passed))
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.exec_()
Если бы кто-нибудь мог мне помочь, это было бы здорово! Кроме того, если вместо нескольких строк кода изменить код, это будет лучше, но любой из них подойдет.