PyQt/PySide: Desarrollo de aplicaciones de escritorio con Python

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

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

  1. Crear una instancia de QApplication
  2. Crear y configurar los widgets
  3. Mostrar la ventana principal
  4. Iniciar el bucle de eventos con exec() o exec_()
  5. Finalizar la aplicación

Recommendations