Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
dev:python:pygtk:agencement-widgets [2015/08/13 14:21] – yoann | dev:python:pygtk:agencement-widgets [2021/02/01 21:51] (Version actuelle) – modification externe 127.0.0.1 |
---|
^ expand= True | Le widget aura la possibilité de consommer l'espace disponible | | ^ expand= True | Le widget aura la possibilité de consommer l'espace disponible | |
^ expand= False| Le widget ne consommera pas plus d'espace que necessaire | | ^ 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= True | Le widget rempli de son contenu l'espace supplémentaire | |
^ fill= False | Laisser vide l'espace disponible | | ^ fill= False | l'espace supplémentaire est utilise comme marge | |
| |
<note> | <note> |
</code> | </code> |
| |
**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 | **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 widget placé dans le conteneur occupera seulement l'espace nécessaire. Si **expand=True**, l'espace supplémentaire est utilisé par 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 |
| |
| ===== Exemples ===== |
| |
| Dans les exemples ci-dessous, en mode interactif on crée une fenêtre puis un conteneur horizontal à l’intérieur duquel 4 boutons sont placés. On fait varier les valeurs des arguments **expand**, **fill** et **padding**. |
| |
| | <code python> |
| box.pack_start(bt1, False, False) |
| box.pack_end(bt2, False, False) |
| box.pack_start(bt3, False, False) |
| box.pack_start(bt4, False, False) |
| </code> | {{dev:python:pygtk:pygtk-packing-01.png}} | |
| |
| | <code python> |
| box.pack_start(bt1, True, False) |
| box.pack_end(bt2, True, False) |
| |
| </code> | {{dev:python:pygtk:}} | |
| |
| |
| <code python> |
| box = gtk.HBox(homogeneous=False, spacing=0) |
| </code> |
| |
| L'argument **spacing** donné à la création du conteneur est différent de l'argument **padding** spécifié lors de l'insertion de l'objet dans le conteneur (packing). la valeur spacing est ajoutée entre les objets |
| |
| <code python> |
| box= gtk.HBox(homogeneous=False, spacing=20) |
| box.pack_start(boutons[0], expand=False, fill=False, padding=0) |
| box.pack_start(boutons[1], expand=False, fill=False, padding=0) |
| </code> |
| |
| Dans cet exemple on définit un espace de 20 pixels entre chaque objets dans le conteneur. Lors du packing des boutons on spécifie que ceux-ci n'occuperont pas l'espace supplémentaire disponible expand=False. Le résultat ci-dessous: |
| |
| {{dev:python:pygtk:pygtk-packing-03.png}} |
| |
| |
| Le **padding** ou rembourrage est une marge présente de chaque coté du widget. |
| <code python> |
| box = gtk.HBox(homogeneous=False,spacing=0) |
| box.pack_start(boutons[0],padding=20) |
| box.pack_start(boutons[1],padding=10) |
| </code> |
| |
| Ici, pour le bouton 0, une marge a été définie a 20 pixel de chaque coté. Les arguments **expand** et **fill** de la méthode **pack_start()** n'ont pas été précisés. Ils prennent donc leur valeur par défaut (True). Le bouton rempliera l'espace supplémentaire disponible. De même pour le second bouton mais la marge a été fixée à 10. Ci-dessous le résultat obtenu: |
| |
| {{dev:python:pygtk:pygtk-packing-04.png}} |
| |
| ===== Tableau ===== |
| |
| Pour l'agencement des widget, PyGTK met à disposition le conteneur gtk.Table |
| |
| <code python> |
| table = gtk.Table(rows=1, columns=1, homogeneous=False) |
| </code> |
| |
| L'argument **homogeneous** permet de spécifier comment les boites du tableau sont redimensionnées. Si **homogeneous= True**, les boites auront toutes la dimension du widget le plus grand contenu dans le tableau. Si la valeur de homogeneous est False, la taille d'un élément en hauteur sera celle du widget le plus grand sur la même ligne et sa longueur sera celle du plus long de la colonne. |
| |
| Pour placer des widgets dans un objet de type Table, utiliser la méthode attach: |
| |
| <code python> |
| object.attach(child, left_attach, rigt_attach, top_attach, bottom_attach |
| xoptions=EXPAND|FILL, yoptions:EXPAND|FILL, xpadding=0, ypadding= 0) |
| </code> |
| |
| |