Outils pour utilisateurs

Outils du site


dev:python:pygtk:agencement-widgets

Ceci est une ancienne révision du document !


Agencer les widgets

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:

  • Les tailles requises ou par défaut de chaque widget qui dépendent normalement de leur contenu (en particuliers les labels).
  • La valeur des arguments expand et fill fournis lors de l'insertion du widget dans le conteneur.
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
Ces comportements peuvent paraître assez complexes à appréhender au départ mais ils sont indispensables lorsqu'on souhaite utiliser correctement toutes les fonctionnalités de redimensionnement dynamique des fenêtres.

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

Références

  • PyGTK 2.0 Tutorial, chapitre 4
dev/python/pygtk/agencement-widgets.1439475663.txt.gz · Dernière modification : 2021/02/01 21:51 (modification externe)