为了账号安全,请及时绑定邮箱和手机立即绑定

Qt顺序显示窗口

Qt顺序显示窗口

Qyouu 2021-03-20 19:15:46
我正在使用以登录窗口开头的Python Qt应用程序。登录后,我要显示正常的应用程序窗口。作为测试,我尝试两次显示AuthWindow(登录窗口)。预期的效果是,先打开一次登录窗口,然后关闭它,然后打开第二个窗口,依此类推。第一个打开,关闭它并退出程序实际上发生了什么。import sysfrom PyQt4 import QtGuifrom AuthWindow import AuthWindowdef main():    app = QtGui.QApplication(sys.argv)    w = AuthWindow()    w.show()    w = AuthWindow()    w.show()    sys.exit(app.exec())if __name__ == '__main__':    main()这是AuthWindow的代码:from PyQt4 import QtGuiclass AuthWindow(QtGui.QDialog):    User, Admin = range(2)    def __init__(self, parent = None):        super().__init__(parent)        self.setWindowTitle('Login')        hbox = QtGui.QHBoxLayout(self)        vbox = QtGui.QVBoxLayout()        self.username = QtGui.QLineEdit()        self.password = QtGui.QLineEdit()        vbox.addWidget(QtGui.QLabel('Username'))        vbox.addWidget(self.username)        vbox.addWidget(QtGui.QLabel('Password'))        vbox.addWidget(self.password)        btn = QtGui.QPushButton('Login')        btn.clicked.connect(self.loginClicked)        hbox.addLayout(vbox)        hbox.addWidget(btn)        self.password.setEchoMode(QtGui.QLineEdit.Password)    def loginClicked(self, ev):        auth = self.checkLogin()        print(auth)    def checkLogin(self):        username = self.username.text()        password = self.password.text()        print(username)        print(password)        # login logic will go here...
查看完整描述

1 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

我认为问题在于show()允许程序继续;您应该使用exec_()暂停代码,直到关闭窗口。因此,如果您输入:


def main():

    app = QtGui.QApplication(sys.argv)

    w = AuthWindow()

    w.exec_()

    w.show()

    sys.exit(app.exec_())

在第一个authwindow关闭之前,不会创建第二个。


查看完整回答
反对 回复 2021-03-29
  • 1 回答
  • 0 关注
  • 393 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信