wxPython - GridSizer

Como sugiere el nombre, un GridSizerEl objeto presenta una cuadrícula bidimensional. Los controles se agregan en la ranura de la cuadrícula en orden de izquierda a derecha y de arriba a abajo. El objeto GridSizer toma cuatro parámetros:

wx.GridSizer(rows, columns, vgap, hgap)

Los parámetros vgap y hgap controlan el espaciado vertical y horizontal entre los controles adyacentes.

La siguiente tabla muestra algunos métodos importantes de la clase wxGridSizer:

SN Métodos y descripción
1

Add()

Agrega un control en la siguiente ranura de cuadrícula disponible

2

AddMany()

Agrega cada elemento en la lista de controles

3

SetRows()

Establece el número de filas en el medidor.

4

GetRows()

Recupera el número de filas en el medidor.

5

SetCols()

Establece el número de columnas en el medidor.

6

GetCols()

Recupera el número de columnas en tamaño.

7

SetVGap()

Establece el espacio vertical (en píxeles) entre las celdas

8

GetVGap()

Devuelve el valor de vgap entre las celdas.

9

SetHGap()

Establece el espacio horizontal (en píxeles) entre las celdas

10

GetHGap()

Devuelve el valor de hgap entre las celdas.

El siguiente código muestra un gridsizer simple de una cuadrícula de 4 por 4 con un espacio vertical y horizontal de 5 píxeles.

Gs = wx.GridSizer(4, 4, 5, 5)

Se agregan sucesivamente dieciséis objetos de botón mediante un bucle 'for'.

for i in range(1,17): 
   btn = "Btn"+str(i) 
   gs.Add(wx.Button(p,label = btn),0,wx.EXPAND)

El código completo es el siguiente:

import wx
  
class Example(wx.Frame): 
   
   def __init__(self, parent, title): 
      super(Example, self).__init__(parent, title = title,size = (300,200)) 
             
      self.InitUI() 
      self.Centre() 
      self.Show()      
         
   def InitUI(self): 
	
      p = wx.Panel(self) 
         
      gs = wx.GridSizer(4, 4, 5, 5) 
		
      for i in range(1,17): 
         btn = "Btn"+str(i) 
         gs.Add(wx.Button(p,label = btn),0,wx.EXPAND) 

         p.SetSizer(gs)  
   
app = wx.App() 
Example(None, title = 'Grid demo') 
app.MainLoop()

El código anterior produce la siguiente salida: