wxPython - FlexiGridSizer

Ce calibreur a également une grille bidimensionnelle. Cependant, il offre un peu plus de flexibilité dans la disposition des commandes dans les cellules. Bien que tous les contrôles de la même ligne aient la même hauteur et que tous les contrôles de la même colonne aient la même largeur, la taille de chaque cellule n'est pas uniforme comme dans GridSizer.

La largeur et / ou la hauteur des cellules dans une seule colonne / ligne peuvent être autorisées à s'étendre par AddGrowableRow () et AddGrowableCol ().

wx.FlexiGridSizer le constructeur de classe prend quatre paramètres -

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

Une brève description des principales méthodes de wx.FlexiGridSizer est donnée ci-dessous -

SN Méthodes et description
1

AddGrowableCol()

Spécifie une colonne d'index donné à agrandir si une hauteur supplémentaire est disponible.

2

AddGrowRow()

Spécifie une ligne d'index donné à agrandir si une largeur supplémentaire est disponible.

3

SetFlexibleDirection()

Spécifie si la flexibilité du calibreur affecte la ligne, la colonne ou les deux.

Exemple

Un formulaire à deux colonnes est conçu avec le code suivant. La première colonne contient des étiquettes et la seconde des zones de texte. La deuxième colonne est configurée pour être cultivable. De même, la troisième ligne est configurée pour être agrandie. (Notez que l'index de ligne et l'index de colonne commencent à 0). Le deuxième paramètre de la fonction AddGrowableCol () et AddGrowableRow () est la proportion de croissance.

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

Le code entier est le suivant -

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()

Le code ci-dessus produit la sortie suivante -