我正在使用以登录窗口开头的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关闭之前,不会创建第二个。
添加回答
举报
0/150
提交
取消