Introdução
PyQt e PySide são bibliotecas poderosas para criar interfaces gráficas multiplataforma em Python usando o framework Qt. Elas oferecem acesso a um rico conjunto de ferramentas do Qt: widgets, sistemas de eventos, estilos, animações, integração com bancos de dados e até QML para criar interfaces modernas.
A principal diferença entre PyQt e PySide está no licenciamento: PyQt exige licença GPL ou comercial, enquanto PySide (implementação oficial da Qt Company) é distribuído sob a licença LGPL, mais permissiva, tornando-o preferível para projetos comerciais.
Neste guia completo, abordaremos todos os aspectos do trabalho com essas bibliotecas: desde a instalação e criação de interfaces simples até projetos complexos com bancos de dados, estilização e empacotamento de aplicativos prontos.
Instalação e Configuração
Instalando PyQt5 e PyQt6
# PyQt5 (versão estável)
pip install pyqt5 pyqt5-tools
# PyQt6 (versão moderna)
pip install pyqt6 pyqt6-tools
Instalando PySide2 e PySide6
# PySide2 (para Qt 5)
pip install pyside2
# PySide6 (versão recomendada)
pip install pyside6
Verificando a Instalação
# Para PyQt5
from PyQt5.QtWidgets import QApplication
print("PyQt5 instalado com sucesso")
# Para PySide6
from PySide6.QtWidgets import QApplication
print("PySide6 instalado com sucesso")
Fundamentos da Criação de Aplicativos
Janela Simples com Botão
Versão PyQt5
from PyQt5.QtWidgets import QApplication, QPushButton, QVBoxLayout, QWidget
import sys
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('Meu primeiro app PyQt5')
self.setGeometry(100, 100, 300, 200)
layout = QVBoxLayout()
button = QPushButton('Clique em mim')
button.clicked.connect(self.on_click)
layout.addWidget(button)
self.setLayout(layout)
def on_click(self):
print("Botão clicado!")
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
Versão PySide6
from PySide6.QtWidgets import QApplication, QPushButton, QVBoxLayout, QWidget
import sys
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('Meu primeiro app PySide6')
self.setGeometry(100, 100, 300, 200)
layout = QVBoxLayout()
button = QPushButton('Clique em mim')
button.clicked.connect(self.on_click)
layout.addWidget(button)
self.setLayout(layout)
def on_click(self):
print("Botão clicado!")
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
Arquitetura de Aplicativos Qt
Componentes Principais
QApplication é o objeto central de qualquer aplicativo Qt. Ele gerencia o loop de eventos, processa eventos do sistema e coordena o funcionamento de todos os widgets.
QWidget é a classe base para todos os elementos da interface do usuário. Pode conter outros widgets e servir como contêiner.
QMainWindow é um widget especializado para criar a janela principal do aplicativo, com suporte a menus, barras de ferramentas, barra de status e widget central.
QDialog é a classe para criar janelas de diálogo, incluindo diálogos modais e não modais.
Ciclo de Vida do Aplicativo
- Criação da instância QApplication
- Criação e configuração dos widgets
- Exibição da janela principal
- Início do loop de eventos com exec() ou exec_()
- Encerramento do aplicativo
Também na biblioteca
Java Image I/O API: redimensionamento e corte de imagens | Guia
Trabalho com XML em Java: DOM, SAX, StAX e JAXB — guia completo
Migrações de banco de dados em TypeScript: TypeORM, Prisma e Drizzle
Compose Multiplatform para Kotlin: guia completo com exemplos
Playwright para JavaScript (Node.js): guia completo com exemplos