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

18.5. Style des widgets

Les méthodes suivantes définissent et récupèrent le style associé à un widget:

  widget.set_style(style)

  style = widget.get_style()

La fonction :

  style = get_default_style()

récupère le style par défaut.

Un style contient les informations graphiques dont a besoin un widget pour s'afficher dans les cinq états possibles :

  STATE_NORMAL        # état pendant les opérations normales.
  STATE_ACTIVE        # le widget est actif, (ex :un bouton pressé).
  STATE_PRELIGHT      # le pointeur de la souris est au-dessus du widget.
  STATE_SELECTED      # le widget est sélectionné.
  STATE_INSENSITIVE   # le widget est insensible.

Un style comprend les attributs suivants :

  fg          # une liste de 5 couleurs de premier plan - une pour chaque état
  bg          # une liste de 5 couleurs de fond
  light       # une liste de 5 couleurs - créés dans la méthode set_style()
  dark        # une liste de 5 couleurs - créés dans la méthode set_style()
  mid         # une liste de 5 couleurs - créés dans la méthode set_style()
  text        # une liste de 5 couleurs
  base        # une liste de 5 couleurs
  text_aa     # une liste de 5 couleurs intermediaire entre text/base
  
  black       # la couleur noire
  white       # la couleur blanche
  font_desc   # la description de police pango par défaut

  xthickness  #
  ythickness  #

  fg_gc       # une liste de 5 contextes graphiques - créés dans la méthode set_style()
  bg_gc       # une liste de 5 contextes graphiques - créés dans la méthode set_style()
  light_gc    # une liste de 5 contextes graphiques - créés dans la méthode set_style()
  dark_gc     # une liste de 5 contextes graphiques - créés dans la méthode set_style()
  mid_gc      # une liste de 5 contextes graphiques - créés dans la méthode set_style()
  text_gc     # une liste de 5 contextes graphiques - créés dans la méthode set_style()
  base_gc     # une liste de 5 contextes graphiques - créés dans la méthode set_style()
  black_gc    # une liste de 5 contextes graphiques - créés dans la méthode set_style()
  white_gc    # une liste de 5 contextes graphiques - créés dans la méthode set_style()

  bg_pixmap   # une liste de 5 GdkPixmaps

Chaque attribut peut être défini directement, par exemple style.black et style.fg_gc[gtk.STATE_NORMAL]. Tous les attributs sont en lecture seule excepté style.black, style.white, style.black_gc et style.white_gc.

Un style existant peut être recopié pour être modifié ensuite par le méthode :

  nouveau_style = style.copy()

... qui copie les attributs de style à l'exception des listes de contexte graphique et des listes de couleurs light, dark et mid (clair, foncé et médian).

Le style actuel d'un widget peut être connu par :

  style = widget.get_style()

Pour modifier le style d'un widget (par exemple sa couleur de premier plan), il faut utiliser la méthode :

  widget.modify_fg(etat, couleur)
  widget.modify_bg(etat, couleur)
  widget.modify_text(etat, couleur)
  widget.modify_base(etat, couleur)
  widget.modify_font(font_desc)
  widget.set_style(style)

En définissant le paramètre style, on crée le contexte graphique et on alloue les couleurs. La plupart des widgets se redessinent automatiquement lorsque le style a été modifié. Si le paramètre style vaut None, le widget reviendra à son apparence par défaut.

Un widget n'est pas affecté par tous les changements de style. Par exemple, modifier la couleur de fond d'une étiquette (Label) ne changera pas la couleur de fond affichée car le widget Label ne possède pas son propre gtk.gdk.Window. L'arrère-plan de l'étiquette dépend de la couleur de fond de son parent. Utiliser un EventBox pour contenir l'étiquette (Label) permet de définir sa couleur de fond. Se reporter à la section 10.1, “The EventBox” (non encore traduit) pour voir un exemple.