Classe: wxGridSizer()
Ce sizer est bidimensionnel.!
C'est à dire qu'il détermine la taille du plus grand de ses enfants, selon les deux directions horizontale et verticale, et applique ces dimensions à toutes les "cases" de la grille.
bagSizer = wx.wxGridSizer(nbLignes, nbColonnes, ecartVertical, ecartHorizontal) bagSizer:Add(param1, param2, param3, param4)
(1)
zéro ou rien, indique que les objets insérés au sizer, conserveront leur dimension original dans le sens defini. (vertical ou horizontal).
(2)
wx.wxGROW (ou wx.wxEXPAND), force la fenêtre à grandir avec le sizer.
wx.wxSHAPED indique à la fenêtre de changer de dimension tout en préservant le ratio original.
Quand le flag wx.wxGROW n'est pas utilisé, l'élément peut être aligné dans l'espace disponible en fonction des indication suivantes:
wx.wxALIGN_LEFT, wx.wxALIGN_TOP, wx.wxALIGN_RIGHT, wx.wxALIGN_BOTTOM,
wx.wxALIGN_CENTER_HORIZONTAL et wx.wxALIGN_CENTER_VERTICAL.
wx.wxALIGN_CENTER précise un alignement Vertical et horizontal.
Par défaut, l'alignement est wx.wxALIGN_TOP + wx.wxALIGN_LEFT.(en haut à gauche)
Une fenêtre appartenant à un sizer peut avoir une bordure, dont les cotés affichés peuvent être spécifiés.
Utilisez wx.wxTOP, wx.wxLEFT, wx.wxRIGHT et wx.wxBOTTOM ou wx.wxALL pour les 4 cotés.
Ces bordures sont invisibles, mais indispensable pour pouvoir créer une marge interne ou "padding".
Pour additionner différents "flags" dans le param3, utilisez le signe "+".
Vous trouverez ci-dessous, la liste des méthodes implémentées par wxLua 2.8.10.
GetCols() | Retourne le nombre de colonnes du sizer. |
GetHGap() | Retourne l'écart horizontal (en pixels) entre les cellules dans le sizer. |
GetRows() | Retourne le nombre de lignes du sizer. |
GetVGap() | Retourne l'écart vertical (en pixels) entre les cellules dans le sizer. |
SetCols(cols) | Définit le nombre de colonnes dans le sizer |
SetHGap(ecart) | Définit l'écart horizontal (en pixels) entre les cellules dans le sizer. |
SetRows(lignes) | Définit le nombre de lignes dans le sizer. |
SetVGap(ecart) | Définit l'espace vertical (en pixels) entre les cellules dans le s |
Vous allez trouver dans le code suivant, un appel à: tostring(). Il s'agit d'une fonction de base Lua.
Voir à ce sujet, le chapitre consacré à ce langage.
require("wx") -- inutile si on utilise wxluafreeze.exe -- Création d'une frame et de son panel. local frame = wx.wxFrame(wx.NULL, wx.wxID_ANY, "wxGridSizer") local panel = wx.wxPanel(frame, -1) -- Centrage de la frame au milieu de l'écran. frame:Centre() -- Création de l'objet sizer avec une propiété verticale. local mainSizer = wx.wxBoxSizer(wx.wxVERTICAL) -- Soit 3 lignes de 2 colonnes avec 10px entre les lignes -- et 5px entre les colonnes. -- Construction de l'objet gridSizer. local gridSizer = wx.wxGridSizer(3, 2, 10, 5) for i = 1, 6 do local bouton = wx.wxButton(panel, -1, tostring(i)) gridSizer:Add(bouton, 0, wx.wxGROW) end -- tostring(i): transforme (i)nombre en (i)chaîne de caractères. -- On ajoute le gridSizer dans le mainSizer mainSizer:Add(gridSizer, 1, wx.wxGROW, 0) -- On affecte le mainSizer au panel. panel:SetSizer(mainSizer); -- On fixe une taille minimale de la frame au démarrage. mainSizer:SetSizeHints(frame) mainSizer:Fit(frame) -- Démarrage de l'application. wx.wxGetApp():SetTopWindow(frame) frame:Show(true) wx.wxGetApp():MainLoop()
Ce qui donne comme résultat, avec une fenêtre extensible.