from QT import QtWidgets, QT from User import User import yaml class Login_Dialog (QtWidgets.QDialog) : def __init__ (self, config_file, username = "") : super ().__init__ () cfg = User.Load_Yaml (config_file) self.users = User (cfg.users) self.setWindowTitle ("Login") self.layout = L = QtWidgets.QFormLayout (self) self.user_name = QtWidgets.QLineEdit () self.password = QtWidgets.QLineEdit () self.password.setEchoMode (QtWidgets.QLineEdit.Password) L.addRow ("Benutzername", self.user_name) L.addRow ("Passwort", self.password) layout = QtWidgets.QHBoxLayout () login = QtWidgets.QPushButton ("Login") login.setEnabled (False) self.error = QtWidgets.QLabel ("") layout.addWidget (self.error) login.clicked.connect (self._login) layout.addStretch (10) layout.addWidget (login) login.setDefault (True) L.addRow (layout) self.login = login self.password.editingFinished.connect (self._login) self.user_name.editingFinished.connect(self._check_login_possible) self.user_name.setText (username) if username : self.password.setFocus () # end def __init__ def _check_login_possible (self) : un = self.user_name.text () pw = self.password.text () self.login.setEnabled ((len (un) >= 3) and (len (pw) >= 3)) # end def _check_login_possible def _login (self) : un = self.user_name.text () pw = self.password.text () pw_ok = self.users.check_password (un, pw, True) self.login.setEnabled (pw_ok) if not pw_ok : self.error.setText ("Passwort falsch") else : self.accept () # end def _login # end class Login_Dialog