wxPython - FlexiGridSizer

Este dimensionador também possui uma grade bidimensional. No entanto, oferece um pouco mais de flexibilidade no layout dos controles nas células. Embora todos os controles na mesma linha tenham a mesma altura e todos os controles na mesma coluna tenham a mesma largura, o tamanho de cada célula não é uniforme como no GridSizer.

A largura e / ou altura das células em uma única coluna / linha podem ser estendidas pelo método AddGrowableRow () e AddGrowableCol ().

wx.FlexiGridSizer o construtor de classe leva quatro parâmetros -

Wx.FlexiGridSizer(rows, cols, vgap, hgap)

Uma breve descrição dos principais métodos de wx.FlexiGridSizer é fornecida abaixo -

SN Métodos e Descrição
1

AddGrowableCol()

Especifica uma coluna de determinado índice para crescer se uma altura extra estiver disponível.

2

AddGrowRow()

Especifica uma linha de determinado índice para crescer se largura extra estiver disponível.

3

SetFlexibleDirection()

Especifica se a flexibilidade do tamanho afeta a linha, a coluna ou ambos.

Exemplo

Um formulário de duas colunas é projetado com o código a seguir. A primeira coluna contém rótulos e a segunda contém caixas de texto. A segunda coluna está configurada para crescer. Da mesma forma, a terceira linha é configurada para crescer. (Observe que o índice da linha e o índice da coluna começam em 0). O segundo parâmetro na função AddGrowableCol () e AddGrowableRow () é a proporção de crescimento.

fgs.AddGrowableRow(2, 1) 
fgs.AddGrowableCol(1, 1)

Todo o código é o seguinte -

import wx
  
class Example(wx.Frame): 
   
   def __init__(self, parent, title): 
      super(Example, self).__init__(parent, title = title, size = (300, 250)) 
             
      self.InitUI()
      self.Centre() 
      self.Show()      
         
   def InitUI(self): 
      panel = wx.Panel(self)
		
      hbox = wx.BoxSizer(wx.HORIZONTAL)
		
      fgs = wx.FlexGridSizer(3, 2, 10,10)
		
      title = wx.StaticText(panel, label = "Title") 
      author = wx.StaticText(panel, label = "Name of the Author") 
      review = wx.StaticText(panel, label = "Review")
		
      tc1 = wx.TextCtrl(panel) 
      tc2 = wx.TextCtrl(panel) 
      tc3 = wx.TextCtrl(panel, style = wx.TE_MULTILINE)
		
      fgs.AddMany([(title), (tc1, 1, wx.EXPAND), (author),  
         (tc2, 1, wx.EXPAND), (review, 1, wx.EXPAND), (tc3, 1, wx.EXPAND)])  
      fgs.AddGrowableRow(2, 1) 
      fgs.AddGrowableCol(1, 1)  
      hbox.Add(fgs, proportion = 2, flag = wx.ALL|wx.EXPAND, border = 15) 
      panel.SetSizer(hbox) 
		
app = wx.App() 
Example(None, title = 'FlexiGrid Demo') 
app.MainLoop()

O código acima produz a seguinte saída -