我正在使用以登錄窗口開頭的Python Qt應(yīng)用程序。登錄后,我要顯示正常的應(yīng)用程序窗口。作為測試,我嘗試兩次顯示AuthWindow(登錄窗口)。預(yù)期的效果是,先打開一次登錄窗口,然后關(guān)閉它,然后打開第二個窗口,依此類推。第一個打開,關(guān)閉它并退出程序?qū)嶋H上發(fā)生了什么。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條經(jīng)驗 獲得超5個贊
我認為問題在于show()允許程序繼續(xù);您應(yīng)該使用exec_()暫停代碼,直到關(guān)閉窗口。因此,如果您輸入:
def main():
app = QtGui.QApplication(sys.argv)
w = AuthWindow()
w.exec_()
w.show()
sys.exit(app.exec_())
在第一個authwindow關(guān)閉之前,不會創(chuàng)建第二個。
添加回答
舉報
0/150
提交
取消