wxPython - GridSizer
Como o nome sugere, um GridSizerobjeto apresenta uma grade bidimensional. Os controles são adicionados no slot da grade na ordem da esquerda para a direita e de cima para baixo. O objeto GridSizer tem quatro parâmetros -
wx.GridSizer(rows, columns, vgap, hgap)
Os parâmetros vgap e hgap controlam o espaçamento vertical e horizontal entre os controles adjacentes.
A tabela a seguir mostra alguns métodos importantes da classe wxGridSizer -
SN | Métodos e Descrição |
---|---|
1 | Add() Adiciona um controle no próximo slot de grade disponível |
2 | AddMany() Adiciona cada item na lista de controles |
3 | SetRows() Define o número de linhas no sizer |
4 | GetRows() Recupera o número de linhas no sizer |
5 | SetCols() Define o número de colunas no sizer |
6 | GetCols() Recupera o número de colunas em tamanho |
7 | SetVGap() Define uma lacuna vertical (em pixels) entre as células |
8 | GetVGap() Retorna o valor de vgap entre as células |
9 | SetHGap() Define a lacuna horizontal (em pixels) entre as células |
10 | GetHGap() Retorna o valor de hgap entre as células |
O código a seguir demonstra um gridsizer simples de uma grade de 4 por 4 com lacunas vertical e horizontal de 5 pixels.
Gs = wx.GridSizer(4, 4, 5, 5)
Dezesseis objetos de botão são adicionados sucessivamente usando um loop 'for'.
for i in range(1,17):
btn = "Btn"+str(i)
gs.Add(wx.Button(p,label = btn),0,wx.EXPAND)
O código completo é o seguinte -
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()
O código acima produz a seguinte saída -