wxPython - FlexiGridSizer
Questo misuratore ha anche una griglia bidimensionale. Tuttavia, fornisce un po 'più di flessibilità nella disposizione dei controlli nelle celle. Sebbene tutti i controlli nella stessa riga abbiano la stessa altezza e tutti i controlli nella stessa colonna abbiano la stessa larghezza, la dimensione di ogni cella non è uniforme come in GridSizer.
La larghezza e / o l'altezza delle celle in una singola colonna / riga possono essere estese con il metodo AddGrowableRow () e AddGrowableCol ().
wx.FlexiGridSizer il costruttore di classi accetta quattro parametri:
Wx.FlexiGridSizer(rows, cols, vgap, hgap)
Di seguito viene fornita una breve descrizione dei principali metodi di wx.FlexiGridSizer:
SN | Metodi e descrizione |
---|---|
1 | AddGrowableCol() Specifica una colonna di un dato indice da aumentare se è disponibile un'altezza extra. |
2 | AddGrowRow() Specifica una riga di un dato indice da aumentare se è disponibile una larghezza extra. |
3 | SetFlexibleDirection() Specifica se la flessibilità di sizer influisce sulla riga, sulla colonna o su entrambe. |
Esempio
Un form a due colonne è progettato con il codice seguente. La prima colonna contiene le etichette e la seconda contiene le caselle di testo. La seconda colonna è destinata a crescere. Allo stesso modo, la terza riga è destinata a crescere. (Notare che l'indice di riga e l'indice di colonna iniziano da 0). Il secondo parametro nella funzione AddGrowableCol () e AddGrowableRow () è la percentuale di crescita.
fgs.AddGrowableRow(2, 1)
fgs.AddGrowableCol(1, 1)
L'intero codice è il seguente:
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()
Il codice precedente produce il seguente output: