PyQT-5 Cuadros de Diálogo

En este tutorial Python estudiaremos los cuadros de diálogo estándar que provee la biblioteca PyQT-5 aprenderemos a programar los cuadros de dialogo QInputDialog, QFileDialog, QColorDialog, QFontDialog y el QMessageBox, cada uno de ellos nos provee de funcionalidades distintas que nos facilitan el desarrollo de aplicación con Python y PyQT.

QInputDialog


Esta clase contiene una serie de métodos que muestran distintos cuadros de diálogo que nos sirven para obtener una entrada por parte del usuario, entre ellos tenemos QInputDialog.getInt() y QInputDialog.getDouble() los cuales nos permiten obtener un valor numérico del tipo correspondiente, QInputDialog.getText() obtiene una cadena de texto, QInputDialog.getItem() le permite al usuario escoger uno de los elementos indicados usando un QComboBox, QInputDialog.getColor() abre un cuadro de dialogo que permite indicar o seleccionar un color.

value, ok = QInputDialog.getText(self, "getText()", "Como te llamas:")
if ok and value != '' : print('Nombre:', value)

value, ok = QInputDialog.getInt(self, "getInt()", "Dime Tu Edad:", 18, 1, 150)
if ok : print('Edad:', value)

value, ok = QInputDialog.getDouble(self, "getDouble()", "Cuanto Pesas:")
if ok : print('Peso:', value)

items = ("Perro", "Gato", "Aves", "Serpientes", "Otros")
value, ok = QInputDialog.getItem(self, "getItem()", "Mascota favorita:", items)
if ok : print('Mascota:', value)

Para los métodos getInt() y getDouble() podemos indicar opcionalmente el valor inicial, el mínimo y máximo permitido, para getItem() se debe indicar la lista de elementos disponibles y opcionalmente el índice del elemento seleccionado por defecto.

Estos métodos devuelven una tupla de dos elementos donde el primero “value” contiene el valor seleccionado y el segundo “ok” indica si el usuario acepto o canceló la entrada.
tutorial pyqt-5 QInputDialog

QFileDialog


En esta sección del tutorial programaremos el QFileDialog el mismo nos provee de un cuadro de diálogo que nos permite obtener la ruta de un directorio (carpeta) o archivo que deseemos abrir o guardar, a la hora de abrir archivos podemos seleccionar varios de ellos.

Los métodos estáticos QFileDialog.getSaveFileName() permite al usuario indicar la ruta donde desea guardar cierto archivo, por otra parte QFileDialog.getOpenFileName() nos dice cuál es el archivo que el usuario quiere abrir, finalmente QFileDialog.getExistingDirectory() devuelve la carpeta indicada o seleccionada por el usuario.

def buscarArchivo(self):
    file, _ = QFileDialog.getOpenFileName(self, 'Buscar Archivo', QDir.homePath(), "All Files (*);;Text Files (*.txt)")
    if file:
        print("Archivo seleccionado: ", file)

Para getSaveFileName() y getOpenFileName() indicamos el título del cuadro, el nombre del directorio inicial y los filtros para los archivos deseados.
pyqt-5 QFileDialog Tutoriales

QColorDialog


Este cuadro de diálogo como su nombre lo indica está diseñado para permitir al usuario seleccionar un color de manera sencilla, para este ejemplo tomaremos el color indicado por el usuario y lo usaremos para pintar el fondo de la ventana principal, usamos el método getColor() para abrir el cuadro y si lo deseamos podemos establecer el color inicial, rojo para nosotros.

def buscarColor(self):
    color = QColorDialog.getColor(Qt.red, self)
    if color.isValid():
        self.setPalette(QPalette(color))

QColorDialog programación pyqt-5

QFontDialog


QFontDialog.getFont() es el método que usaremos para abrir este cuadro, con el podremos buscar y seleccionar una fuente de la que se encuentren instaladas en nuestro sistema operativo, al igual que el cuadro anterior es fácil de usar tanto para el programador como para el usuario, también podemos indicar la fuente inicial, para este tutorial cambiaremos la fuente de la ventana principal.
tutorial QFontDialog cambiar fuente pyqt-5
Como vemos en la imagen podemos cambiar también el estilo y tamaño de la fuente que seleccionemos.

def cambiarFuente(self):
    font, ok = QFontDialog.getFont(self)
    if ok:
        self.setFont(font)

QMessageBox


Finalmente vemos el QMessageBox este nos provee de una serie de cuadros diseñados para mostrar mensajes, informativos, alertas y otros, además podemos obtener una respuesta afirmativa o negativa por parte del usuario.

Los métodos con los que contamos son: QMessageBox.warning(), QMessageBox.critical(), QMessageBox.information() y QMessageBox.question(), para cada uno de ellos podemos establecer el título del cuadro, el mensaje a mostrar y los botones que contendrá el cuadro.

def showDialog(self):
    # QMessageBox.warning(self, "Warning Dialog", "Peligro Alto Voltage")
    reply = QMessageBox.critical(self, "QMessageBox.critical()",
            "Error irrecuperable en la aplicacion \n que desea hacer para proceder.",
            QMessageBox.Abort | QMessageBox.Retry | QMessageBox.Ignore)
    if reply == QMessageBox.Abort:
        print("Abortar la mision")
    elif reply == QMessageBox.Retry:
        print("Intentar nuevamente")
    else:
        print("Nada por ahora")

pyqt-5 progrmación de QMessegeBox
Dependiendo del método que usemos cambiara el icono que muestra el cuadro.

Debemos mencionar que existen muchos más cuadros de los mencionados en este tutorial, y que podemos personalizar cada uno de ellos o crear nuestros propios cuadros de diálogo.

GitHub: PyQT-5 Cuadros de Diálogo

Comentarios

Temas relacionados

Entradas populares de este blog

tkinter Grid

Conectar SQL Server con Java

Controles y Contenedores JavaFX 8 - I

Histogramas OpenCV Python