Ceci est une ancienne révision du document !
Pour organiser les différents composants de l'interface graphique (widgets) PyGTK propose un système de boites (box) qui sont des conteneurs invisibles à l’intérieur desquels on insère les widgets. Il existe deux familles: les conteneurs verticaux et les horizontaux. Dans un conteneur horizontal, les objets insérés sont placés les un à la suite des autres en file indienne. Dans un conteneur vertical, les objets seront disposés verticalement les uns sous les autres. Les boites s'imbriquent à volonté afin de produire l'effet désiré.
En travaillant avec les conteneurs, l'apparence d'un widget en taille et proportion peut sensiblement différer de ce à que l'on souhaitait obtenir. C'est une conséquence du fonctionnent interne du système de boites proposé par GTK+. La taille d'un widget va dépendre de la façon dont il est regroupé avec les autres widget mais également de la façon dont son propre conteneur l'autorise ou non à s’étendre ou occuper l'espace disponible.
L'espace que chacun occupera est déterminée par:
| expand= True | Le widget aura la possibilité de consommer l'espace disponible |
|---|---|
| expand= False | Le widget ne consommera pas plus d'espace que necessaire |
| fill= True | Si plus d'espace est disponible, l'occuper avec mon contenu |
| fill= False | Laisser vide l'espace disponible |
Ci-dessous un exemple de signature avec la méthode pack_start() disponible sur les conteneurs:
box.pack_start(child, expand=True, fill=True, padding=0)
child est l'objet que l'on souhaite insérer dans le conteneur. L'argument expand permet de contrôler l’expansion du conteneur. Si expand=False, le conteneur s'agrandit seulement de l'espace nécessaire pour le widget Si expand=True, le conteneur se développe pour occuper tout l'espace disponible. L'argument fill permet de définir si l'espace supplémentaire est disponible pour les widgets eux-même (fill=True) ou pour l’écartement des objets entre-eux (fill=False). Il aura un effet seulement si l'argument expand=True