如何在同一个类中调用第二个窗口?



如何调用同一类中的两个窗口中的一个?底线是这样的:首先打开一个对话框窗口,然后login_clicked函数工作(它没有添加到repl代码中),当您单击对话框窗口中的按钮时,login_clicked()函数被触发,在login_clicked()函数结束时,SecondWin窗口已经打开,并且使用.destroy()

销毁对话框窗口。p。S如果你建议创建2个单独的类,那么我也尝试过,但我不能链接它们并调用SecondWin窗口,如果你告诉我,我会很高兴。

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QWidget, QApplication
import sys


class Ui_Dialog(object):
def main(self, SecondWin):
SecondWin.setObjectName("SecWin")
SecondWin.setFixedSize(530, 416)
SecondWin.setWindowTitle("HMessage")

app = QtWidgets.QApplication(sys.argv)
SecondWin = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.main(SecondWin)
SecondWin.show()
app.exec()

def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.setFixedSize(400, 265)
QtCore.QMetaObject.connectSlotsByName(Dialog)

if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
app.exec_()

我在工作中使用的东西也有类似的情况,我只是在第一个登录窗口上使用.exec_(),当该窗口关闭时,我返回登录是否成功。然后,如果登录成功,我在主窗口上使用.show()。

if __name__ == "__main__":
app            = QtWidgets.QApplication(sys.argv)
login_window   = LoginWindow()
login_complete = login_window.exec_()
if login_complete:                             
window = MainWindow()   
window.show()
sys.exit(app.exec_())

在这个例子中,我的两个窗口都在不同的类中,第一个窗口将阻止main执行,直到登录窗口关闭。然后它会显示主窗口或者根据我在LoginWindow()中返回的变量结束程序

你真的应该为每个窗口单独创建类,因为这样更容易跟踪,而且每个窗口的作用域也更容易跟踪。

下面是一个在类中初始化QDialog的示例。

class LoginWindow(QtWidgets.QDialog):
def __init__(self):
QtWidgets.QDialog.__init__(self)                                                        
self.setupUi(self)
....

最新更新