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

16.3. Bouton de couleur (ColorButton) et de police (FontButton)

16.3.1. Bouton de couleur (ColorButton)

Un widget ColorButton fournit une manière commode d'afficher une couleur dans un bouton que l'on peut cliquer pour ouvrir une fenêtre ColorSelectionDialog de choix de couleur. C'est utile pour afficher et sélectionner des couleurs dans un dialogue de préférence d'utilisateur. Un ColorButton se charge d'établir, d'afficher et récupérer le résultat de la fenêtre de sélection de couleur ColorSelectionDialog. On crée un ColorButton par le constructeur :

  colorbutton = gtk.ColorButton(color=gtk.gdk.Color(0,0,0))

La couleur de départ peut être précisée par le paramètre color ou établie par la suite avec la méthode :

  colorbutton.set_color(color)

Le titre de la fenêtre ColorSelectionDialog qui s'affiche quand on clique sur le bouton peut être fixé et récupéré par la méthode :

  colorbutton.set_title(title)

  title = colorbutton.get_title()

L'opacité de la couleur est fixée en utilisant le canal alpha. Les méthodes suivantes récupèrent et fixent l'opacité de la couleur dans une gamme de 0 (transparent) à 65535 (opaque) :

  alpha = colorbutton.get_alpha()

  colorbutton.set_alpha(alpha)

Par défaut, la valeur alpha est ignorée car la propriété "use_alpha" est fixée à FALSE. La valeur de cette propriété "use_alpha" peut être fixée et récupérée par la méthode :

  colorbutton.set_use_alpha(use_alpha)

  use_alpha = colorbutton.get_use_alpha()

Si "use_alpha" vaut TRUE, la fenêtre ColorSelectionDialog affiche un curseur pour régler l'opacité et montre la couleur sur un fond à damier.

On peut surveiller les changements de la couleur choisie en se reliant au signal "color-set" qui est émis quand l'utilisateur choisit une couleur. La fonction de rappel du signal est :

  def color_set_cb(colorbutton, user_data):

Le programme colorbutton.py illustre l'utilisation du bouton de couleur ColorButton. La Figure 16.8, « Exemple de bouton de couleur » montre le programme en cours d'exécution.

Figure 16.8. Exemple de bouton de couleur

Exemple de bouton de couleur.

16.3.2. Bouton de police (FontButton)

Comme le ColorButton, le bouton de police FontButton est un widget pratique qui fournit un aperçu de la police actuellement choisie et qui ouvre une fenêtre FontSelectionDialogquand on le clique. Un bouton FontButton se charge d'établir, d'afficher et récupérer le résultat de la fenêtre de sélection de police FontSelectionDialog. On le crée par le constructeur :

  boutonpolice = gtk.FontButton(nompolice=None)

... où nompolice est une chaîne indiquant la police courante de la fenêtre FontSelectionDialog. Par exemple, le nom de la police peut être écrit comme 'Sans 12', 'Sans Bold 14', ou 'Monospace Italic 14'. Il est nécessaire d'indiquer au minimum la famille et la taille de la police.

La police en cours peut aussi être fixée et récupérée par les méthodes suivantes :

  resultat = boutonpolice.set_font_name(nompolice)

  nompolice = boutonpolice.get_font_name()

... où resultat renvoie TRUE ou FALSE pour indiquer si la prise en compte de la police a été réalisée avec succès. Le FontButton possède un certain nombre de propriétés et méthodes associées qui agissent sur l'affichage de la police en cours dans le bouton FontButton. Les propriétés "show-size" et "show-style" contiennent des valeurs booléennes qui contrôlent si la taille et le style seront affichés dans l'étiquette du bouton. Les méthodes suivantes fixent et récupèrent les valeurs de ces propriétés :

  boutonpolice.set_show_style(show_style)
  show_style = boutonpolice.get_show_style()

  boutonpolice.set_show_size(show_size)
  show_size = boutonpolice.get_show_size()

Autre manière, vous pouvez utiliser la taille et le style actuellement affichés par l'étiquette pour illustrer directement le choix de police. Voici les méthodes associées aux propriétés "use-size" et "use-font" :

  boutonpolice.set_use_font(use_font)
  use_font = boutonpolice.get_use_font()

  boutonpolice.set_use_size(use_size)
  use_size = boutonpolice.get_use_size()

Employer la police courante sur l'étiquette semble une technique utile malgré les inévitables changements de taille du bouton mais utiliser la taille choisie n'apparait pas aussi utile, surtout avec de trés grandes ou trés petites tailles de police. Il faut noter que si on fixe "use-font" ou "use-size" à TRUE pour ensuite les mettre à FALSE, les dernières polices et tailles utilisées seront conservées. Par exemple, si "use-font" et "use-size" ont la valeur TRUE et que la police actuelle est Monospace Italic 20, l'étiquette du bouton FontButton s'affiche en Monospace Italic 20 ; puis si "use-font" et "use-size" passent à FALSE et que la police en cours est modifiée en Sans 12, l'étiquette s'affichera encore en Monospace Italic 20. Employez le programme d'exemple fontbutton.py pour voir comment ceci fonctionne.

Enfin, le titre de la fenêtre FontSelectionDialog peut être fixé et récupéré grâce aux méthodes :

  boutonpolice.set_title(titre)

  titre = boutonpolice.get_title()

Comme pour le bouton ColorButton, on peut surveiller les changements dans la police en cours en se connectant au signal émis lorsque l'utilisateur choisit une police. La fonction de rappel du signal a la forme :

  def fct_rappel_choixpolice(boutonpolice, données utilisateur):

Le programme d'exemple fontbutton.py illustre l'utilisation du FontButton. On peut fixer les propriétés "use-font", "use-size", "show-size" et "show-style" avec les boutons interrupteurs. La Figure 16.9, « Exemple de bouton de police » montre le programme en cours d'exécution.

Figure 16.9. Exemple de bouton de police

Exemple de bouton de police.