PyQt5 Tutorials

Dominando PyQt5 QGridLayout: Tutorial Completo

Spread the love

Este tutorial proporciona una guía completa sobre el uso del potente QGridLayout de PyQt5 para crear interfaces de usuario flexibles y organizadas. Cubriremos los conceptos básicos, técnicas avanzadas como la expansión de celdas y el control del estiramiento de widgets, y ofreceremos ejemplos prácticos para solidificar su comprensión.

Tabla de Contenidos

  1. Uso Básico de QGridLayout
  2. Expandiendo Múltiples Celdas
  3. Controlando el Estiramiento de Widgets
  4. Técnicas Avanzadas y Consideraciones

1. Uso Básico de QGridLayout

El QGridLayout organiza los widgets en una cuadrícula de filas y columnas. Cada widget ocupa una sola celda por defecto. Comencemos con un ejemplo simple:


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

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Ejemplo de Diseño de Cuadrícula PyQt5")

layout = QGridLayout()

button1 = QPushButton("Botón 1")
button2 = QPushButton("Botón 2")
button3 = QPushButton("Botón 3")
button4 = QPushButton("Botón 4")

layout.addWidget(button1, 0, 0)  # Fila 0, Columna 0
layout.addWidget(button2, 0, 1)  # Fila 0, Columna 1
layout.addWidget(button3, 1, 0)  # Fila 1, Columna 0
layout.addWidget(button4, 1, 1)  # Fila 1, Columna 1

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

Esto crea una cuadrícula de 2×2 botones. addWidget(widget, row, column) agrega un widget a la fila y columna especificadas (indexadas desde cero).

2. Expandiendo Múltiples Celdas

Para hacer que un widget se extienda sobre varias filas o columnas, use addWidget(widget, row, column, rowspan, colspan). rowspan y colspan definen el número de filas y columnas que ocupa el widget.


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

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Ejemplo de Expansión de Diseño de Cuadrícula PyQt5")

layout = QGridLayout()

label = QLabel("Esta etiqueta abarca dos columnas")
button1 = QPushButton("Botón 1")
button2 = QPushButton("Botón 2")

layout.addWidget(label, 0, 0, 1, 2)  # Abarca dos columnas
layout.addWidget(button1, 1, 0)
layout.addWidget(button2, 1, 1)

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

Aquí, la etiqueta abarca dos columnas.

3. Controlando el Estiramiento de Widgets

Por defecto, los widgets se dimensionan a su tamaño mínimo. Para controlar cómo los widgets se expanden para llenar el espacio disponible, use setColumnStretch(column, stretch) y setRowStretch(row, stretch). Un factor de estiramiento mayor significa que el widget ocupará una parte proporcionalmente mayor del espacio disponible.


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

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Ejemplo de Estiramiento de Diseño de Cuadrícula PyQt5")

layout = QGridLayout()

button1 = QPushButton("Botón 1")
button2 = QPushButton("Botón 2")

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

layout.setColumnStretch(1, 2)  # La columna 1 se estira el doble que la columna 0

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

button2 ahora ocupará el doble del espacio horizontal de button1.

4. Técnicas Avanzadas y Consideraciones

Para diseños más complejos, considere usar:

  • addLayout(): Incruste otros diseños dentro de un QGridLayout para estructuras anidadas.
  • Alineación: Use setAlignment() para controlar la alineación de los widgets dentro de sus celdas.
  • Espaciado: Ajuste el espaciado entre filas y columnas usando setVerticalSpacing() y setHorizontalSpacing().
  • Márgenes: Controle los márgenes alrededor de toda la cuadrícula usando setContentsMargins().

Dominar estas técnicas le permitirá crear interfaces PyQt5 sofisticadas y altamente adaptables.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *