Dominando QLabel en PyQt5: Una Guía Completa
El widget QLabel es una piedra angular del desarrollo de interfaces gráficas de usuario (GUI) con PyQt5, ofreciendo una manera simple pero versátil de mostrar texto e imágenes. Este tutorial profundiza en sus funcionalidades, proporcionando ejemplos prácticos y mejores prácticas para elevar tus habilidades en PyQt5.
Tabla de Contenidos
- Creando y Mostrando Widgets QLabel
- Estilos de Texto: Fuentes, Colores y HTML
- Alineación de Texto Precisa
- Mostrando Imágenes con QLabel
- Ajustar Texto y Saltos de Línea
- Técnicas Avanzadas: Señales y Ranuras
1. Creando y Mostrando Widgets QLabel
Comencemos creando un QLabel básico para mostrar texto. Esto implica instanciar la clase QLabel y establecer su widget padre.
import sys
from PyQt5.QtWidgets import QApplication, QLabel, QWidget
app = QApplication(sys.argv)
window = QWidget()
label = QLabel("¡Hola, PyQt5!", window)
label.show()
window.show()
sys.exit(app.exec_())
Este fragmento de código crea una ventana simple con el texto «¡Hola, PyQt5!» mostrado. El QLabel
es un hijo del QWidget
, asegurando una visualización correcta dentro de la ventana.
2. Estilos de Texto: Fuentes, Colores y HTML
Más allá de la simple visualización de texto, puedes personalizar significativamente la apariencia de QLabel. Exploremos el estilo de fuente, los cambios de color y el uso de HTML para el formato de texto enriquecido.
import sys
from PyQt5.QtWidgets import QApplication, QLabel, QWidget
from PyQt5.QtGui import QFont, QColor
app = QApplication(sys.argv)
window = QWidget()
label = QLabel("¡Hola, PyQt5!", window) # Texto en negrita usando HTML
label.setFont(QFont('Arial', 14))
label.setStyleSheet("color: rgb(0, 128, 0);") # Color de texto verde
label.show()
window.show()
sys.exit(app.exec_())
Este ejemplo demuestra cómo establecer una fuente específica (Arial, tamaño 14) y un color verde usando hojas de estilo. Observa el uso de etiquetas HTML () para texto en negrita dentro del texto de la etiqueta.
3. Alineación de Texto Precisa
Controla la posición del texto dentro del QLabel usando el método setAlignment()
y las banderas de alineación de Qt.
import sys
from PyQt5.QtWidgets import QApplication, QLabel, QWidget
from PyQt5.QtCore import Qt
app = QApplication(sys.argv)
window = QWidget()
label = QLabel("Texto Centrado", window)
label.setAlignment(Qt.AlignCenter) # Alineación central
label.show()
window.show()
sys.exit(app.exec_())
Esto centra el texto. Explora otras banderas como Qt.AlignRight
, Qt.AlignTop
, Qt.AlignBottom
, y sus combinaciones para un control más preciso.
4. Mostrando Imágenes con QLabel
QLabel no es solo para texto; también puede mostrar imágenes. Usa el método setPixmap()
con un objeto QPixmap
.
import sys
from PyQt5.QtWidgets import QApplication, QLabel, QWidget
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import Qt
app = QApplication(sys.argv)
window = QWidget()
pixmap = QPixmap('path/to/your/image.png') # Reemplaza con la ruta de tu imagen
label = QLabel(window)
label.setPixmap(pixmap)
label.setAlignment(Qt.AlignCenter)
label.show()
window.show()
sys.exit(app.exec_())
Recuerda reemplazar 'path/to/your/image.png'
con la ruta real a tu archivo de imagen.
5. Ajustar Texto y Saltos de Línea
Para cadenas de texto largas, habilita los saltos de línea para evitar que el texto se desborde de los límites de la etiqueta. También puedes ajustar la política de tamaño de la etiqueta para que se adapte al texto.
import sys
from PyQt5.QtWidgets import QApplication, QLabel, QWidget
from PyQt5.QtCore import Qt
app = QApplication(sys.argv)
window = QWidget()
label = QLabel("Esta es una cadena de texto larga que necesita saltos de línea.", window)
label.setWordWrap(True) # Habilitar saltos de línea
label.adjustSize() # Ajustar el tamaño de la etiqueta al texto
label.show()
window.show()
sys.exit(app.exec_())
setWordWrap(True)
activa los saltos de línea, y adjustSize()
asegura que la etiqueta cambie automáticamente de tamaño para ajustarse al texto con saltos de línea.
6. Técnicas Avanzadas: Señales y Ranuras
QLabel puede emitir señales, permitiendo la interacción con otras partes de tu aplicación. Por ejemplo, puedes conectar una señal a una ranura para realizar acciones cuando se hace clic en la etiqueta.
(Ejemplo usando mousePressEvent omitido por brevedad, pero fácilmente encontrado en la documentación de PyQt5)