¿Qué es PyQt5 y para qué sirve?
PyQt5 es un conjunto de envolturas (wrappers) de Python para la biblioteca Qt. Es una de las herramientas más populares para crear interfaces gráficas de usuario multiplataforma. Con PyQt5, los desarrolladores pueden crear aplicaciones de escritorio profesionales con un diseño moderno y funcionalidades avanzadas.
Principales características de PyQt5
PyQt5 ofrece a los desarrolladores una amplia gama de funcionalidades:
- Gran variedad de widgets listos para usar a través del módulo QtWidgets
- Soporte para ventanas, botones, campos de texto y listas
- Sistema de señales y slots para programación orientada a eventos
- Integración con elementos gráficos mediante QGraphicsView
- Personalización de interfaces con estilos (stylesheets)
- Compatibilidad con múltiples sistemas operativos
Instalación de la biblioteca PyQt5
Para instalar PyQt5, usa el gestor de paquetes pip:
pip install PyQt5
Creación de una ventana básica
Toda aplicación en PyQt5 comienza creando un objeto QApplication. Este es el objeto principal que gestiona todas las ventanas y eventos. La ventana principal se crea a partir de QWidget.
import sys
from PyQt5.QtWidgets import QApplication, QWidget
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Ventana simple")
window.resize(300, 200)
window.show()
sys.exit(app.exec_())
QApplication es un componente obligatorio para cualquier aplicación GUI en PyQt5. Procesa los eventos del sistema y gestiona el ciclo de vida de la aplicación.
Trabajo con controles básicos
QLineEdit – campo de entrada de texto
QLineEdit es un campo de texto de una sola línea. Este widget se usa ampliamente para capturar datos del usuario.
from PyQt5.QtWidgets import QLineEdit, QVBoxLayout, QPushButton
window = QWidget()
window.setWindowTitle("Ejemplo QLineEdit")
layout = QVBoxLayout()
line_edit = QLineEdit()
line_edit.setPlaceholderText("Ingresa tu nombre")
button = QPushButton("Enviar")
def on_click():
print(f"¡Hola, {line_edit.text()}!")
button.clicked.connect(on_click)
layout.addWidget(line_edit)
layout.addWidget(button)
window.setLayout(layout)
window.show()
El campo de texto soporta varios métodos para trabajar con texto:
- setText() – establecer texto mediante código
- text() – obtener el texto ingresado
- setPlaceholderText() – establecer un texto de ayuda
- setMaxLength() – limitar la longitud máxima de entrada
QComboBox – creación de listas desplegables
QComboBox permite al usuario seleccionar una opción de una lista desplegable.
from PyQt5.QtWidgets import QComboBox
combo = QComboBox()
combo.addItems(["Selecciona una opción", "Python", "C++", "JavaScript"])
def on_selection_change(value):
print(f"Has seleccionado: {value}")
combo.currentTextChanged.connect(on_selection_change)
layout.addWidget(combo)
QComboBox ofrece varios métodos útiles:
- addItem() – agregar un elemento
- addItems() – agregar una lista de elementos
- currentText() – obtener el texto seleccionado
- currentIndex() – obtener el índice del elemento seleccionado
- clear() – eliminar todos los elementos
QCheckBox – trabajo con casillas de verificación y señales
QCheckBox permite al usuario marcar o desmarcar una opción.
from PyQt5.QtWidgets import QCheckBox
checkbox = QCheckBox("Acepto los términos y condiciones")
def on_checkbox_state(state):
if state:
print("Casilla marcada")
else:
print("Casilla desmarcada")
checkb