PyQt5 Tutorials

Dominando o QGridLayout do PyQt5: Um Tutorial Completo

Spread the love

Este tutorial fornece um guia abrangente sobre o uso do poderoso QGridLayout do PyQt5 para criar interfaces de usuário flexíveis e organizadas. Abordaremos os conceitos básicos, técnicas avançadas como a extensão de células e o controle do alongamento de widgets, e ofereceremos exemplos práticos para solidificar sua compreensão.

Sumário

  1. Uso Básico do QGridLayout
  2. Extensão em Múltiplas Células
  3. Controlando o Alongamento de Widgets
  4. Técnicas Avançadas e Considerações

1. Uso Básico do QGridLayout

O QGridLayout organiza widgets em uma grade de linhas e colunas. Cada widget ocupa uma única célula por padrão. Vamos começar com um exemplo simples:


import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QGridLayout

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Exemplo de Layout de Grade PyQt5")

layout = QGridLayout()

button1 = QPushButton("Botão 1")
button2 = QPushButton("Botão 2")
button3 = QPushButton("Botão 3")
button4 = QPushButton("Botão 4")

layout.addWidget(button1, 0, 0)  # Linha 0, Coluna 0
layout.addWidget(button2, 0, 1)  # Linha 0, Coluna 1
layout.addWidget(button3, 1, 0)  # Linha 1, Coluna 0
layout.addWidget(button4, 1, 1)  # Linha 1, Coluna 1

window.setLayout(layout)
window.show()
sys.exit(app.exec_())

Isso cria uma grade 2×2 de botões. addWidget(widget, row, column) adiciona um widget à linha e coluna especificadas (indexadas a partir de zero).

2. Extensão em Múltiplas Células

Para fazer um widget se estender por várias linhas ou colunas, use addWidget(widget, row, column, rowspan, colspan). rowspan e colspan definem o número de linhas e colunas que o widget ocupa.


import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QGridLayout, QLabel

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Exemplo de Extensão de Layout de Grade PyQt5")

layout = QGridLayout()

label = QLabel("Este rótulo se estende por duas colunas")
button1 = QPushButton("Botão 1")
button2 = QPushButton("Botão 2")

layout.addWidget(label, 0, 0, 1, 2)  # Se estende por duas colunas
layout.addWidget(button1, 1, 0)
layout.addWidget(button2, 1, 1)

window.setLayout(layout)
window.show()
sys.exit(app.exec_())

Aqui, o rótulo se estende por duas colunas.

3. Controlando o Alongamento de Widgets

Por padrão, os widgets são dimensionados para seu tamanho mínimo. Para controlar como os widgets se expandem para preencher o espaço disponível, use setColumnStretch(column, stretch) e setRowStretch(row, stretch). Um fator de extensão maior significa que o widget ocupará uma parte proporcionalmente maior do espaço disponível.


import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QGridLayout

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Exemplo de Alongamento de Layout de Grade PyQt5")

layout = QGridLayout()

button1 = QPushButton("Botão 1")
button2 = QPushButton("Botão 2")

layout.addWidget(button1, 0, 0)
layout.addWidget(button2, 0, 1)

layout.setColumnStretch(1, 2)  # A coluna 1 se estende duas vezes mais que a coluna 0

window.setLayout(layout)
window.show()
sys.exit(app.exec_())

button2 agora ocupará o dobro do espaço horizontal de button1.

4. Técnicas Avançadas e Considerações

Para layouts mais complexos, considere usar:

  • addLayout(): Incorpore outros layouts dentro de um QGridLayout para estruturas aninhadas.
  • Alinhamento: Use setAlignment() para controlar o alinhamento de widgets dentro de suas células.
  • Espaçamento: Ajuste o espaçamento entre linhas e colunas usando setVerticalSpacing() e setHorizontalSpacing().
  • Margens: Controle as margens ao redor da grade inteira usando setContentsMargins().

Dominar essas técnicas permitirá que você crie interfaces PyQt5 sofisticadas e altamente adaptáveis.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *