En este capítulo del tutorial de Python 3 con PyQt5 veremos como podemos ir validando los campos de los formularios utilizando expresiones regulares.
Crearemos un archivo .ui con Designer llamado validacion.ui. El formulario será un cuadro de diálogo sin botones (Dialog without Buttons).
- Agregaremos un campo Line Edit al cual llamaremos nombre y con su respectiva etiqueta Label.
- Agregaremos un campo Line Edit al cual llamaremos email y con su respectiva etiqueta Label.
- Agregaremos un campo Spin Box al cual llamaremos edad para incluir un rango de números enteros y con su respectiva etiqueta Label.
- Y finalmente agregaremos un botón Push Button al cual llamaremos boton y tendrá el texto Validar.
Los campos nombre y email se irán validando al mismo tiempo que su texto cambia (textChanged), cada cual con su respectivo método de validación validar_nombre() y validar_email(), ambos métodos regresan un valor boolean, si es True es una validación correcta, si es False no.
Al hacer click sobre el botón (clicked), comprobaremos a través de un método llamado validar_formulario() si los métodos validar_nombre() y validar_email() regresan el valor True, de ser así es que el formulario es correcto y mostraremos un mensaje informando de que el formulario es correcto, de lo contrario, mostraremos un mensaje advirtiendo de que es incorrecto.
validacion.pyw
import sys, re from PyQt5.QtWidgets import QApplication, QDialog, QMessageBox from PyQt5 import uic class Dialogo(QDialog): def __init__(self): QDialog.__init__(self) uic.loadUi("validacion.ui", self) self.nombre.textChanged.connect(self.validar_nombre) self.email.textChanged.connect(self.validar_email) self.boton.clicked.connect(self.validar_formulario) def validar_nombre(self): nombre = self.nombre.text() validar = re.match('^[a-z\sáéíóúàèìòùäëïöüñ]+$', nombre, re.I) if nombre == "": self.nombre.setStyleSheet("border: 1px solid yellow;") return False elif not validar: self.nombre.setStyleSheet("border: 1px solid red;") return False else: self.nombre.setStyleSheet("border: 1px solid green;") return True def validar_email(self): email = self.email.text() validar = re.match('^[a-zA-Z0-9\._-]+@[a-zA-Z0-9-]{2,}[.][a-zA-Z]{2,4}$', email, re.I) if email == "": self.email.setStyleSheet("border: 1px solid yellow;") return False elif not validar: self.email.setStyleSheet("border: 1px solid red;") return False else: self.email.setStyleSheet("border: 1px solid green;") return True def validar_formulario(self): if self.validar_nombre() and self.validar_email(): QMessageBox.information(self, "Formulario correcto", "Validación correcta", QMessageBox.Discard) else: QMessageBox.warning(self, "Formulario incorrecto", "Validación incorrecta", QMessageBox.Discard) app = QApplication(sys.argv) dialogo = Dialogo() dialogo.show() app.exec_()
No hay comentarios:
Publicar un comentario