我正在用PyQt5创建一个程序,并已将两个窗口的.py文件制作成。一个是登录窗口,另一个是mainWindow。要打开该程序,一个单独的程序main.py将调用logInWindow.py中的子例程来打开该窗口。有一个按钮,单击该按钮时应关闭登录窗口并通过调用来打开mainWindow.py。主窗口可以正常打开,但登录窗口不会关闭。我需要它,以便在mainWindow打开后关闭登录窗口。在mainWindow打开之前,期间或之后进行操作并不重要,只要它打开就可以了。由于程序的其他部分,我还需要能够将值从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_()
如果有人可以帮助我,那就太好了!另外,如果只是几行代码,而不是更改代码的工作方式,那会更好,但两者都可以。