wxPython - FlexiGridSizer
Este medidor también tiene una cuadrícula bidimensional. Sin embargo, proporciona un poco más de flexibilidad en la disposición de los controles en las celdas. Aunque todos los controles de la misma fila tienen la misma altura y todos los controles de la misma columna tienen el mismo ancho, el tamaño de cada celda no es uniforme como en GridSizer.
Se puede permitir que el ancho y / o alto de las celdas en una sola columna / fila se extiendan mediante el método AddGrowableRow () y AddGrowableCol ().
wx.FlexiGridSizer el constructor de clases toma cuatro parámetros -
Wx.FlexiGridSizer(rows, cols, vgap, hgap)
A continuación se proporciona una breve descripción de los principales métodos de wx.FlexiGridSizer:
SN | Métodos y descripción |
---|---|
1 | AddGrowableCol() Especifica una columna de índice dado para crecer si hay altura adicional disponible. |
2 | AddGrowRow() Especifica una fila de índice dado para crecer si hay ancho adicional disponible. |
3 | SetFlexibleDirection() Especifica si la flexibilidad del dimensionador afecta la fila, la columna o ambas. |
Ejemplo
Un formulario de dos columnas está diseñado con el siguiente código. La primera columna contiene etiquetas y la segunda contiene cuadros de texto. La segunda columna está configurada para crecer. De manera similar, la tercera fila está configurada para que se pueda cultivar. (Tenga en cuenta que el índice de fila y el índice de columna comienzan desde 0). El segundo parámetro en la función AddGrowableCol () y AddGrowableRow () es la proporción de crecimiento.
fgs.AddGrowableRow(2, 1)
fgs.AddGrowableCol(1, 1)
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, 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()
El código anterior produce la siguiente salida: