Introducción
PyQt y PySide son potentes bibliotecas para crear interfaces gráficas multiplataforma en Python utilizando el framework Qt. Ofrecen acceso a un amplio conjunto de herramientas de Qt: widgets, sistemas de eventos, estilos, animaciones, manejo de bases de datos e incluso QML para desarrollar interfaces modernas.
La principal diferencia entre PyQt y PySide radica en sus licencias: PyQt requiere GPL o una licencia comercial, mientras que PySide (la implementación oficial de Qt Company) se distribuye bajo la licencia LGPL, más permisiva, lo que lo hace ideal para proyectos comerciales.
En esta guía completa, exploraremos todos los aspectos del trabajo con estas bibliotecas: desde la instalación y creación de interfaces simples hasta proyectos complejos con bases de datos, estilos y empaquetado de aplicaciones listas para usar.
Instalación y configuración
Instalación de PyQt5 y PyQt6
# PyQt5 (versión estable)
pip install pyqt5 pyqt5-tools
# PyQt6 (versión moderna)
pip install pyqt6 pyqt6-tools
Instalación de PySide2 y PySide6
# PySide2 (para Qt 5)
pip install pyside2
# PySide6 (versión recomendada)
pip install pyside6
Verificar la instalación
# Para PyQt5
from PyQt5.QtWidgets import QApplication
print("PyQt5 instalado correctamente")
# Para PySide6
from PySide6.QtWidgets import QApplication
print("PySide6 instalado correctamente")
Fundamentos para crear aplicaciones
Ventana simple con un botón
Versión con PyQt5
from PyQt5.QtWidgets import QApplication, QPushButton, QVBoxLayout, QWidget
import sys
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('Mi primera app con PyQt5')
self.setGeometry(100, 100, 300, 200)
layout = QVBoxLayout()
button = QPushButton('Haz clic')
button.clicked.connect(self.on_click)
layout.addWidget(button)
self.setLayout(layout)
def on_click(self):
print("¡Botón presionado!")
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
Versión con PySide6
from PySide6.QtWidgets import QApplication, QPushButton, QVBoxLayout, QWidget
import sys
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('Mi primera app con PySide6')
self.setGeometry(100, 100, 300, 200)
layout = QVBoxLayout()
button = QPushButton('Haz clic')
button.clicked.connect(self.on_click)
layout.addWidget(button)
self.setLayout(layout)
def on_click(self):
print("¡Botón presionado!")
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
Arquitectura de aplicaciones Qt
Componentes principales
QApplication es el objeto central de cualquier aplicación Qt. Gestiona el bucle de eventos, procesa eventos del sistema y coordina todos los widgets.
QWidget es la clase base para todos los elementos de la interfaz de usuario. Puede contener otros widgets y actuar como contenedor.
QMainWindow es un widget especializado para crear la ventana principal de una aplicación, con soporte para menús, barras de herramientas, barra de estado y un widget central.
QDialog es la clase para crear ventanas de diálogo, tanto modales como no modales.
Ciclo de vida de la aplicación
- Crear una instancia de QApplication
- Crear y configurar los widgets
- Mostrar la ventana principal
- Iniciar el bucle de eventos con exec() o exec_()
- Finalizar la aplicación
También en la biblioteca
Monitoreo de aplicaciones Go (Golang): bibliotecas y herramientas
Hibernate ORM: Potente herramienta para trabajar con bases de datos en Java
ORM para C++: comparación y ejemplos de uso (ODB, SOCI, SQLiteCpp)
Trabajo con Apache Kafka en Go (Golang): bibliotecas y ejemplos
Bibliotecas WebSocket de Swift: Starscream y URLSessionWebSocketTask