PyQt5: Como criar uma interface gráfica em Python? Guia completo

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

O que é PyQt5 e para que serve

PyQt5 é um conjunto de wrappers Python para a biblioteca Qt. É uma das ferramentas mais populares para criar interfaces gráficas de usuário multiplataforma. Com PyQt5, desenvolvedores podem criar aplicações desktop profissionais com design moderno e funcionalidades avançadas.

Principais recursos do PyQt5

PyQt5 oferece uma ampla gama de recursos para desenvolvedores:

  • Diversos widgets prontos através do módulo QtWidgets
  • Suporte para janelas, botões, campos de entrada e listas
  • Sistema de sinais e slots para programação orientada a eventos
  • Integração com elementos gráficos via QGraphicsView
  • Personalização de interfaces com estilos
  • Suporte a múltiplos sistemas operacionais

Instalação da biblioteca PyQt5

Para instalar o PyQt5, use o gerenciador de pacotes pip:

pip install PyQt5

Criando a janela básica da aplicação

Toda aplicação PyQt5 começa com a criação de um objeto QApplication. Este é o objeto principal que gerencia todas as janelas e eventos. A janela principal é criada com base no QWidget.

import sys
from PyQt5.QtWidgets import QApplication, QWidget

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Janela Simples")
window.resize(300, 200)
window.show()
sys.exit(app.exec_())

O QApplication é um componente obrigatório para qualquer aplicação GUI em PyQt5. Ele processa eventos do sistema e gerencia o ciclo de vida da aplicação.

Trabalhando com os principais elementos de controle

QLineEdit - campo de entrada de texto

QLineEdit é um campo de entrada de texto de linha única. Este widget é amplamente utilizado para capturar dados do usuário.

from PyQt5.QtWidgets import QLineEdit, QVBoxLayout, QPushButton

window = QWidget()
window.setWindowTitle("Exemplo QLineEdit")

layout = QVBoxLayout()

line_edit = QLineEdit()
line_edit.setPlaceholderText("Digite seu nome")

button = QPushButton("Enviar")

def on_click():
    print(f"Olá, {line_edit.text()}!")

button.clicked.connect(on_click)

layout.addWidget(line_edit)
layout.addWidget(button)
window.setLayout(layout)
window.show()

O campo de entrada suporta vários métodos para manipulação de texto:

  • setText() - define o texto programaticamente
  • text() - obtém o texto digitado
  • setPlaceholderText() - define um texto de dica
  • setMaxLength() - limita o comprimento máximo da entrada

QComboBox - criando listas suspensas

QComboBox permite que o usuário selecione uma opção de uma lista fornecida.

from PyQt5.QtWidgets import QComboBox

combo = QComboBox()
combo.addItems(["Selecione uma opção", "Python", "C++", "JavaScript"])

def on_selection_change(value):
    print(f"Você selecionou: {value}")

combo.currentTextChanged.connect(on_selection_change)

layout.addWidget(combo)

QComboBox oferece vários métodos úteis:

  • addItem() - adiciona um único item
  • addItems() - adiciona uma lista de itens
  • currentText() - obtém o texto selecionado
  • currentIndex() - obtém o índice do item selecionado
  • clear() - limpa todos os itens

QCheckBox - trabalhando com checkboxes e sinais

QCheckBox permite que o usuário marque ou desmarque uma opção.

from PyQt5.QtWidgets import QCheckBox

checkbox = QCheckBox("Concordo com os termos")

def on_checkbox_state(state):
    if state:
        print("Checkbox marcado")
    else:
        print("Checkbox desmarcado")

checkb                

Blogs

Book Recommendations