Vous êtes à peu près ici : Accueil  »   tutoriel PyGTK  »   PyGTK : sommaire

10.5. Les cadres (Frame)

Les cadres sont utilisés pour englober un ou plusieurs groupes de widgets dans une boîte qui peut, éventuellement, avoir une étiquette. La position de l'étiquette et le style de la boîte sont modifiables.

A Frame can be created with the following function: Un cadre Frame se crée en utilisant :

  cadre = gtk.Frame(label=None)

... où l'étiquette label est placée, par défaut, dans le coin supérieur gauche du cadre. Donner la valeur "None" au paramètre label ou ne pas indiquer de paramètre label entraînera qu'aucune étiquette ne sera affichée. Le texte de l'étiquette est modifiable par :

  cadre.set_label(label)

Pour modifier la position de l'étiquette, on utilise la méthode :

  cadre.set_label_align(xalign, yalign)

...où xalign et yalign ont une valeur comprise entre 0.0 et 1.0. L'argument xalign donne la position de l'étiquette sur le bord horizontal du cadre. Le paramètre yalign n'est pas utilisé actuellement. La valeur par défaut de xalign est 0.0, ce qui place l'étiquette sur le coté gauche du cadre.

La méthode suivante modifie le style de la boîte qui délimite le cadre.

  cadre.set_shadow_type(type)

... où le paramètre type peur prendre l'un des valeurs suivantes :

  SHADOW_NONE
  SHADOW_IN
  SHADOW_OUT
  SHADOW_ETCHED_IN      # par défaut
  SHADOW_ETCHED_OUT

Le programme frame.py montre l'utilisation du widget de cadre Frame. La Figure 10.4, « Exemple de cadre » illustre le résultat obtenu :

Figure 10.4. Exemple de cadre

Exemple de cadre
Exemple de cadre

Voici le code du programme frame.py

     1   #!/usr/bin/env python
     2   # -*- coding:utf-8 -*-
     3   # exemple frame.py
     4   
     5   import pygtk
     6   pygtk.require('2.0')
     7   import gtk
     8   
     9   class ExempleCadre:
    10       def __init__(self):
    11           # Créer une nouvelle fenêtre
    12           fenetre = gtk.Window(gtk.WINDOW_TOPLEVEL)
    13           fenetre.set_title("Exemple de cadre")
    14   
    15           # On connecte l'évènement "destroy" au gestionnaire de signal 
    16           fenetre.connect("destroy", lambda w: gtk.main_quit())
    17           fenetre.set_size_request(300, 300)
    18   
    19           # On définit la largeur de bordure de la fenêtre
    20           fenetre.set_border_width(10)
    21   
    22           # On crée un cadre
    23           cadre = gtk.Frame()
    24           fenetre.add(cadre)
    25   
    26           # On indique l'étiquette du cadre
    27           cadre.set_label("Widget GTK Cadre")
    28   
    29           # On aligne l'étiquette sur la droite du cadre
    30           cadre.set_label_align(1.0, 0.0)
    31   
    32           # On précise le style du cadre
    33           cadre.set_shadow_type(gtk.SHADOW_ETCHED_OUT)
    34           cadre.show()
    35     
    36           # On affiche la fenêtre
    37           fenetre.show()
    38   
    39   def main():
    40       # Enter the event loop
    41       gtk.main()
    42       return 0
    43   
    44   if __name__ == "__main__":
    45       ExempleCadre()
    46       main()

Les programmes calendar.py, label.py et spinbutton.py utilisent aussi des cadres.