IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Apprendre à utiliser le module Python PyGTK 2.0


précédentsommairesuivant

18. Chapitre 18. Définir les attributs des widgets

Ce chapitre décrit les méthodes utilisées pour agir sur les widgets (et les objets) et modifier leur style, espacement, taille, etc.

La méthode :

 
Sélectionnez
  widget.activate()

entraîne l"émission du signal "activate" par le widget.

La méthode :

 
Sélectionnez
  widget.set_sensitive(sensible)

définit la sensibilité d'un widget (par exemple, doit-il réagir à un évènement ?). Si le paramètre sensible vaut TRUE, le widget recevra les évènements ; si le paramètre vaut FALSE, le widget ne recevra pas les évènements. Un widget insensible est normalement affiché en "grisé".

La méthode :

 
Sélectionnez
  widget.set_size_request(largeur, hauteur)

définit la taille du widget à la hauteur et largeur donnée.

18-1. Méthodes des drapeaux des widgets

Les méthodes :

 
Sélectionnez
1.
2.
3.
4.
5.
  widget.set_flags(drapeaux)

  widget.unset_flags(drapeaux)

  drapeaux = widget.flags()

définissent, annulent et récupèrent les drapeaux des gtk.Object et des gtk.Widget. Le paramètre drapeaux peut être n'importe lequel parmi les drapeaux standards :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
  IN_DESTRUCTION    # en cours de destruction
  FLOATING          # flottant orphelin
  RESERVED_1        # réservé
  RESERVED_2        # réservé
  TOPLEVEL          # de niveau supérieur (sans parent)
  NO_WINDOW         # sans fenêtre propre
  REALIZED          # réalisé
  MAPPED            # peut être affiché
  VISIBLE           # visible
  SENSITIVE         # sensible
  PARENT_SENSITIVE  # parent est sensible
  CAN_FOCUS         # peut recevoir le focus
  HAS_FOCUS         # a le focus
  CAN_DEFAULT       # peut être le choix par défaut
  HAS_DEFAULT       # est le choix par défaut
  HAS_GRAB          # a la priorité
  RC_STYLE          # style via le RC
  COMPOSITE_CHILD   # enfant composite
  NO_REPARENT       # non utilisé
  APP_PAINTABLE     # directement dessinable ?
  RECEIVES_DEFAULT  # reçoit le choix par défaut
  DOUBLE_BUFFERED   # possède un double buffer

La méthode :

 
Sélectionnez
  widget.grab_focus()

permet à un widget d'acquérir le focus si son drapeau CAN_FOCUS est activé.

18-2. Méthodes d'affichage des widgets

Les méthodes :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
  widget.show()
  widget.show_all()
  widget.hide()
  widget.hide_all()
  widget.realize()
  widget.unrealize()
  widget.map()
  widget.unmap()

gèrent l'affichage du widget.

La méthode show() permet l'affichage du widget en utilisant les méthodes realize() et map().

La méthode hide() permet de ne plus afficher le widget et de le "démapper", si nécessaire, avec la méthode unmap().

Les méthodes show_all() et hide_all() permettent d'afficher ou de cacher un widget et tous ses enfants.

La méthode realize() permet de réserver des ressources pour un widget, y compris pour sa propre fenêtre.

La méthode unrealize() libère la fenêtre du widget et des autres ressources qui lui sont associées. Elle a aussi pour effet de cacher et "démapper" le widget.

La méthode map() permet de réserver de l'espace pour le widget sur l'écran. Ceci s'applique seulement aux widgets qui doivent être gérés par le gestionnaire de fenêtre. Mapper un widget permet aussi de le "réaliser" si cela est nécessaire.

La méthode unmap() retire un widget de l'affichage et peut aussi le cacher si nécessaire.

18-3. Accélérateurs pour les widgets

Les méthodes suivantes :

 
Sélectionnez
1.
2.
3.
  widget.add_accelerator(accel_signal, accel_group, accel_key, accel_mods, accel_flags)
  
  widget.remove_accelerator(accel_group, accel_key, accel_mods)

ajoutent et suppriment des accélérateurs d'un groupe gtk.AcceleratorGroup qui doit être rattaché au widget de niveau supérieur pour gérer les accélérateurs.

Le paramètre accel_signal est un signal que le widget est en droit d'émettre.

Le paramètre accel_key est la touche du clavier à utiliser comme raccourci.

Le paramètre accel_mods est un groupe de modificateurs pouvant être associés à la touche de clavier (par exemple, Shift, Control, etc.) :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
  SHIFT_MASK
  LOCK_MASK
  CONTROL_MASK
  MOD1_MASK
  MOD2_MASK
  MOD3_MASK
  MOD4_MASK
  MOD5_MASK
  BUTTON1_MASK
  BUTTON2_MASK
  BUTTON3_MASK
  BUTTON4_MASK
  BUTTON5_MASK
  RELEASE_MASK

Le paramètre accel_flags définit la manière dont les informations au sujet de l'accélérateur sont affichées. Les valeurs possibles sont :

 
Sélectionnez
1.
2.
3.
  ACCEL_VISIBLE         # montre le raccourci clavier dans l'affichage du widget
  
  ACCEL_LOCKED          # n'autorise pas la modification de l'affichage de l'accélérateur

Un groupe d'accélérateur est créé par la fonction :

 
Sélectionnez
  accel_group = gtk.AccelGroup()

Le paramètre accel_group est lié au widget de niveau supérieur par la fonction :

 
Sélectionnez
  window.add_accel_group(accel_group)

Un exemple d'ajout d'accélérateur :

 
Sélectionnez
  menu_item.add_accelerator("activate", accel_group,
                            ord('Q'), gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)

18-4. Méthodes de nom des widgets

Les méthodes suivantes définissent et récupèrent le nom d'un widget :

 
Sélectionnez
1.
2.
3.
  widget.set_name(name)

  nom = widget.get_name()

Le paramètre name est une chaîne de caractères qui doit être associée au widget. Ceci est utile pour préciser des styles devant être utilisés avec des widgets particuliers dans une application. Au lieu d'utiliser la classe du widget, son nom peut être utilisé pour limiter l'application du style.

18-5. Style des widgets

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

 
Sélectionnez
1.
2.
3.
  widget.set_style(style)

  style = widget.get_style()

La fonction :

 
Sélectionnez
  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 :

 
Sélectionnez
1.
2.
3.
4.
5.
  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 :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
  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éées dans la méthode set_style()
  dark        # une liste de 5 couleurs - créées dans la méthode set_style()
  mid         # une liste de 5 couleurs - créées 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 intermédiaire 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és style.black, style.white, style.black_gc et style.white_gc.

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

 
Sélectionnez
  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 :

 
Sélectionnez
  style = widget.get_style()

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

 
Sélectionnez
1.
2.
3.
4.
5.
6.
  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'arriè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”La boîte à évènement (EventBox) pour voir un exemple.


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2005 John Finlay. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.