Aperçu du widget, GtkComboBox

Nous continuons notre série de billets consacrés aux principaux widgets sous Gtk.

Cette fois-ci, il s'agit de GtkComboBox, cet élément permet de créer une liste déroulante.

Dans le précédent billet [1] les différents éléments étaient placés dans une « grille », je vais opté pour l'agencement dans une « boîte ».

Si l'on lit la description consacré à ce widget, on constate qu'il en existe un autre.

[...]

For a simple list of textual choices, the model-view API of GtkComboBox can be a bit overwhelming. In this case, GtkComboBoxText offers a simple alternative. [...]

Nous allons donc commencé par celui-là.

Exemple 06 GtkComboBoxText

Il n'y a rien de particulèrement compliqué, on initialise Gtk.ComboBoxText(), auquel on ajoute des éléments grâce à la méthode append_text() [2].

Pour récupérer un des éléments de la liste déroulante, il faut lui associé un signal, changed dans notre cas.

La sélection affiche l'élément dans la console.

Affiche le résultat d'un des élément de GtkComboBoxText

Dans l'exemple suivant, on a simplement rajouter un bouton (GtkButton) associé au signal, clicked.

Exemple 07 GtkComboBoxText et GtkButton

Dans le troisième exemple, on va afficher une info-bulle (GtkTooltip) quand rien n'est sélectionné (et uniquement dans ce cas).

L'affichage du texte dans la console, se fait grâce à la fonction get_active_text(). Elle renvoie None si rien n'est sélectionné, donc on peut jouer sur cette condition pour afficher ou non l'info-bulle.

Exemple 08 GtkComboBoxText, GtkButton et GtkTooltip

Voilà nous avons fait le tours de GtkComboBoxText, il nous reste à voir son « frère » GtkComboBox.

Dans un premier temps on doit définir un modèle GtkListStore. Ensuite la liste déroulante est définie grâce à la fonction new_with_model(). L'affichage de chaque élément se fait grâce à GtkCellRendererText.

Pour récupérer l'élément sélectionné, il faut utiliser la fonction get_active(). Elle nous renvoie uniquement un numéro (celui de la ligne). Comme notre modèle « s'interface » avec GtkTreeModel, on peut donc utiliser ces méthodes, en particulier get_value().

Exemple 09 GtkComboBox et GtkButton

Dans notre dernier exemple, on affiche uniquement une info-bulle, quand rien n'est sélectionné.

Exemple 10 GtkComboBox, GtkButton et GtkTooltip

Notes

[1] Consacré à l'élément GtkEntry.

[2] C'est dans la fonction create_rows()