PyQt/PySide: Desenvolvimento de Aplicativos Desktop com Python

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

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

  1. Criação da instância QApplication
  2. Criação e configuração dos widgets
  3. Exibição da janela principal
  4. Início do loop de eventos com exec() ou exec_()
  5. Encerramento do aplicativo

Recommendations