wxPython - Gestion de la mise en page

Un widget GUI peut être placé à l'intérieur de la fenêtre du conteneur en spécifiant ses coordonnées absolues mesurées en pixels. Les coordonnées sont relatives aux dimensions de la fenêtre définies par l'argument size de son constructeur. La position du widget à l'intérieur de la fenêtre est définie parpos argument de son constructeur.

import wx  

app = wx.App() 
window = wx.Frame(None, title = "wxPython Frame", size = (300,200)) 
panel = wx.Panel(window) 
label = wx.StaticText(panel, label = "Hello World", pos = (100,50)) 
window.Show(True) 
app.MainLoop()

Ce Absolute Positioning ne convient cependant pas pour les raisons suivantes -

  • La position du widget ne change pas même si la fenêtre est redimensionnée.

  • L'apparence peut ne pas être uniforme sur différents périphériques d'affichage avec des résolutions différentes.

  • La modification de la mise en page est difficile car elle peut nécessiter une refonte de l'ensemble du formulaire.

L'API wxPython fournit des classes de mise en page pour une gestion plus élégante du positionnement des widgets à l'intérieur du conteneur. Les avantages des gestionnaires de mise en page par rapport au positionnement absolu sont:

  • Les widgets à l'intérieur de la fenêtre sont automatiquement redimensionnés.
  • Assure une apparence uniforme sur les périphériques d'affichage avec différentes résolutions.
  • L'ajout ou la suppression dynamique de widgets est possible sans avoir à repenser.

Le gestionnaire de mise en page s'appelle Sizer dans wxPython. Wx.Sizer est la classe de base pour toutes les sous-classes de dimensionneurs. Laissez-nous discuter de certains des calibreurs importants tels que wx.BoxSizer, wx.StaticBoxSizer, wx.GridSizer, wx.FlexGridSizer et wx.GridBagSizer.

SN Calibreurs et description
1 BoxSizer

Ce calibreur permet aux commandes d'être disposées en ligne ou en colonne. La disposition de BoxSizer est déterminée par son argument d'orientation (wxVERTICAL ou wxHORIZONTAL).

2 GridSizer

Comme son nom l'indique, un objet GridSizer présente une grille à deux dimensions. Les contrôles sont ajoutés dans la fente de la grille dans l'ordre de gauche à droite et de haut en bas.

3 FlexiGridSizer

Ce calibreur a également une grille bidimensionnelle. Cependant, il offre un peu plus de flexibilité dans la disposition des commandes dans les cellules.

4 GridBagSizer

GridBagSizer est un calibreur polyvalent. Il offre plus d'améliorations que FlexiGridSizer. Le widget enfant peut être ajouté à une cellule spécifique de la grille.

5 StaticBoxSizer

Un StaticBoxSizer place un calibreur de boîte dans une boîte statique. Il fournit une bordure autour de la boîte avec une étiquette en haut.