Jul-03-2019, 05:13 PM
(This post was last modified: Jul-03-2019, 05:13 PM by Axel_Erfurt.)
your dialog does never end.
here is an example for an input Dialog
here is an example for an input Dialog
from PyQt5 import QtWidgets class Login(QtWidgets.QDialog): def __init__(self, parent=None): super(Login, self).__init__(parent) self.textName = QtWidgets.QLineEdit(self) self.textPass = QtWidgets.QLineEdit(self) self.textPass.setEchoMode(QtWidgets.QLineEdit.Password) self.buttonLogin = QtWidgets.QPushButton('Login', self) self.buttonLogin.clicked.connect(self.handleLogin) self.buttonCancel = QtWidgets.QPushButton('Cancel', self) self.buttonCancel.clicked.connect(self.handleCancel) layout = QtWidgets.QVBoxLayout(self) layout.addWidget(self.textName) layout.addWidget(self.textPass) layout.addWidget(self.buttonLogin) layout.addWidget(self.buttonCancel) def handleCancel(self): self.close() def handleLogin(self): if (self.textName.text() == 'foo' and self.textPass.text() == 'bar'): self.accept() else: QtWidgets.QMessageBox.warning( self, 'Error', 'Bad user or password') class Window(QtWidgets.QMainWindow): def __init__(self, parent=None): super(Window, self).__init__(parent) def msgbox(self, message): msg = QtWidgets.QMessageBox(1, "Information", message, QtWidgets.QMessageBox.Ok) msg.setStyleSheet("QLabel{min-width: 100px;}") msg.exec() if __name__ == '__main__': import sys app = QtWidgets.QApplication(sys.argv) login = Login() if login.exec_() == QtWidgets.QDialog.Accepted: window = Window() window.show() window.msgbox("it works!") sys.exit(app.exec_())