Hola a todos voy a realizar un ejercicio que veo que consultan mucho en el BLOG, consta de pasarlo a PyQt4.
Es ejercicio también lo modifiqué y digamos que lo reduje en comparación con el descrito en el enlace.
La siguiente imagen corresponde a la ventana inicial que nos mostrará el programa.
Este es el código generado para obtener la ventana de la imagen anterior se llama prueba.py, convertida de .ui a .py. En el BLOG también enseñaré a realizar esta conversión y lo explicaré pronto. Dejaré el enlace en poco tiempo.
prueba.py
El siguiente código se llama validador.py y llama a prueba.py para invocar la interfaz gráfica.
validador.py
Este es un ejemplo cuando se cumplen todas las condiciones requeridas por el ejercicio.
La siguiente imagen corresponde a la ventana inicial que nos mostrará el programa.
Este es el código generado para obtener la ventana de la imagen anterior se llama prueba.py, convertida de .ui a .py. En el BLOG también enseñaré a realizar esta conversión y lo explicaré pronto. Dejaré el enlace en poco tiempo.
prueba.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'prueba.ui' # # Created by: PyQt4 UI code generator 4.11.4 # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: def _fromUtf8(s): return s try: _encoding = QtGui.QApplication.UnicodeUTF8 def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig, _encoding) except AttributeError: def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig) class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName(_fromUtf8("MainWindow")) MainWindow.resize(568, 189) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setObjectName(_fromUtf8("centralwidget")) self.gridLayout = QtGui.QGridLayout(self.centralwidget) self.gridLayout.setObjectName(_fromUtf8("gridLayout")) self.label_USUARIO = QtGui.QLabel(self.centralwidget) self.label_USUARIO.setObjectName(_fromUtf8("label_USUARIO")) self.gridLayout.addWidget(self.label_USUARIO, 0, 0, 1, 1) self.lineEdit_USUARIO = QtGui.QLineEdit(self.centralwidget) self.lineEdit_USUARIO.setObjectName(_fromUtf8("lineEdit_USUARIO")) self.gridLayout.addWidget(self.lineEdit_USUARIO, 0, 1, 1, 1) self.pushButton_ACEPUSER = QtGui.QPushButton(self.centralwidget) self.pushButton_ACEPUSER.setObjectName(_fromUtf8("pushButton_ACEPUSER")) self.gridLayout.addWidget(self.pushButton_ACEPUSER, 0, 2, 1, 1) self.label_MSJUSER = QtGui.QLabel(self.centralwidget) self.label_MSJUSER.setText(_fromUtf8("")) self.label_MSJUSER.setObjectName(_fromUtf8("label_MSJUSER")) self.gridLayout.addWidget(self.label_MSJUSER, 1, 0, 1, 3) self.label_PASSWORD = QtGui.QLabel(self.centralwidget) self.label_PASSWORD.setObjectName(_fromUtf8("label_PASSWORD")) self.gridLayout.addWidget(self.label_PASSWORD, 2, 0, 1, 1) self.lineEdit_PASSWORD = QtGui.QLineEdit(self.centralwidget) self.lineEdit_PASSWORD.setObjectName(_fromUtf8("lineEdit_PASSWORD")) self.gridLayout.addWidget(self.lineEdit_PASSWORD, 2, 1, 1, 1) self.pushButton_ACEPPASS = QtGui.QPushButton(self.centralwidget) self.pushButton_ACEPPASS.setObjectName(_fromUtf8("pushButton_ACEPPASS")) self.gridLayout.addWidget(self.pushButton_ACEPPASS, 2, 2, 1, 1) self.label_MSJPASS = QtGui.QLabel(self.centralwidget) self.label_MSJPASS.setText(_fromUtf8("")) self.label_MSJPASS.setObjectName(_fromUtf8("label_MSJPASS")) self.gridLayout.addWidget(self.label_MSJPASS, 3, 0, 1, 3) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtGui.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 568, 21)) self.menubar.setObjectName(_fromUtf8("menubar")) MainWindow.setMenuBar(self.menubar) self.statusbar = QtGui.QStatusBar(MainWindow) self.statusbar.setObjectName(_fromUtf8("statusbar")) MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None)) self.label_USUARIO.setText(_translate("MainWindow", "USUARIO:", None)) self.pushButton_ACEPUSER.setText(_translate("MainWindow", "ACEPTAR", None)) self.label_PASSWORD.setText(_translate("MainWindow", "PASSWORD:", None)) self.pushButton_ACEPPASS.setText(_translate("MainWindow", "ACEPTAR", None)) |
El siguiente código se llama validador.py y llama a prueba.py para invocar la interfaz gráfica.
validador.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | import sys from prueba import * class Miformulario(QtGui.QMainWindow): def __init__(self,parent=None): QtGui.QMainWindow.__init__(self,parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) QtCore.QObject.connect(self.ui.pushButton_ACEPUSER, QtCore.SIGNAL('clicked()'), self.mensaje_usuario) QtCore.QObject.connect(self.ui.pushButton_ACEPPASS, QtCore.SIGNAL('clicked()'), self.mensaje_password) def mensaje_usuario(self): long=len(self.ui.lineEdit_USUARIO.text()) y=self.ui.lineEdit_USUARIO.text().isalnum() if y==False: self.ui.label_MSJUSER.setText("El nombre de usuario puede contener solo letras y números") self.ui.lineEdit_USUARIO.clear() #Borra el campo donde se escribe la contraseña if long < 6: self.ui.label_MSJUSER.setText("El nombre de usuario debe contener al menos 6 caracteres") self.ui.lineEdit_USUARIO.clear() #Borra el campo donde se escribe la contraseña if long > 12: self.ui.label_MSJUSER.setText("El nombre de usuario no puede contener más de 12 caracteres") self.ui.lineEdit_USUARIO.clear() #Borra el campo donde se escribe la contraseña if long >5 and long <13 and y ==True: self.ui.label_MSJUSER.setText("Usuario creado correctamente") def mensaje_password(self): user=False #variable de inicialización para identificar espacios validar=False #variable de inicialización para identificar número de caracteres long=len(self.ui.lineEdit_PASSWORD.text()) #Calcula la longitud de la contraseña y=self.ui.lineEdit_PASSWORD.text().isalnum()#True si es alfanumérica, False si no lo es.(Nos interesa que sea False) mayuscula=False #variable iniciliazción para contar las letras mayúsculas minuscula=False #variable iniciliazción para contar las letras minúsculas numeros=False #variable iniciliazción para contar los números correcto=True for carac in self.ui.lineEdit_PASSWORD.text(): #ciclo for que recorre caracter por caracter en la contraseña if carac.isspace()==True: #Saber si el caracter es un espacio user=True #si encuentra un espacio se cambia el valor a True if carac.isupper()== True: #saber si hay mayuscula mayuscula=True #Si encuentra al menos una Mayuscula cambia a True if carac.islower()== True: #saber si hay minúsculas minuscula=True #Si encuentra al menos una minúscula cambia a True if carac.isdigit()== True: #saber si hay números numeros=True #Si encuentra al menos un número cambia a True if user==True: #este valor indica que encontró un espacio self.ui.label_MSJPASS.setText("La contraseña no puede contener espacios") self.ui.lineEdit_PASSWORD.clear() #Borra el campo donde se escribe la contraseña else: validar=True #se escoge con el fin de garantizar que no hay espacios #y pasar al número mínimo de caracteres que contiene la contraseña if long <8 and validar==True: #Se garantiza que la contraseña posea mínimo 8 caracteres sin espacios. self.ui.label_MSJPASS.setText("Mínimo 8 caracteres") self.ui.lineEdit_PASSWORD.clear() #Borra el campo donde se escribe la contraseña validar=False if mayuscula==True and minuscula==True and numeros==True and y==False and validar==True: self.ui.label_MSJPASS.setText("La contraseña es correcta") else: correcto=False #Quiere decir que no cumple al menos uno de los requisitos if correcto==False and validar==True: #No cumpla al menos un requisito, no contiene espacios y es mayor o igual a 8 caracteres. self.ui.lineEdit_PASSWORD.clear() self.ui.label_MSJPASS.setText("La contraseña elegida no es segura: debe contener letras minúsculas, mayúsculas, números y al menos 1 carácter no alfanumérico") if __name__== "__main__": app=QtGui.QApplication(sys.argv) myapp = Miformulario() myapp.show() sys.exit(app.exec_()) |
Este es un ejemplo cuando se cumplen todas las condiciones requeridas por el ejercicio.
Muchas Gracias, cualquier duda o sugerencia me dejan el mensaje.
como le haria para encriptar la contraseña
ResponderBorrar