Как закрыть окно и открыть новое окно нажатием кнопки? - PullRequest
0 голосов
/ 26 марта 2019

Я создаю программу с 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_()

Если бы кто-нибудь мог мне помочь, это было бы здорово! Кроме того, если вместо нескольких строк кода изменить код, это будет лучше, но любой из них подойдет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...