du boot, pc rendu a Nathalie Barret. Pas de retour utilisateur. Fermeture ticket.
Présentation générale de la conception d'une application Python utilisant une IHM GTK
On peut générer facilement le fichier .glade via l'outil de conception d'interface graphique Glade:
$ sudo apt-get install glade-gtk2
Les widgets sont les composants de base permettant de concevoir l'interface graphique de l'application. Cette IHM peut se voir comme un amas hiérarchisé de Widgets:
Un widget ne fait aucune action, il émet simplement un signal lorsqu'un événement se produit.
Dans un toolkit fonctionnant en programmation événementielle (tel que GTK+), la fonction principale s’exécutant est en sommeil jusqu’à ce qu'un événement se produise. A cet instant le contrôle est transmis à la fonction appropriée. Cette transmission du contrôle est mise en œuvre grâce au principe des signaux.
Certains signaux sont hérités d'autres sont spécifiques au Widget. Lorsqu'un événement se produit, widget émet un signal (ex: bouton pressé) mais aucune action n'est prédéfinie. Pour qu'une action puisse se produire, il faut correctement paramétrer le controleur de signal (ou signal handler), qui se charge de capter le signal émit et d’exécuter la bonne fonction. Les Widgets héritent de la méthode GObject.connect
, c'est par cet intermédiaire qu'on paramètre le controleur de signal. Ci-dessous la signature générale de la méthode:
handler_id = mon_widget.connect(sig_name, func, func_data)
GObject.connect
retourne un identifiant qui pourra être utilisé pour déconnecter ou désactiver temporairement le contrôleur définit.
Où func est la fonction de rappel de la forme:
def func(widget, data)
Pour une classe on définira une méthode:
def func(self, widget, data)
Les étapes générales d'utilisation de pygtk se résument à:
Certaines spécificité liées aux objets graphiques rendent difficiles l’exécution de ce type de code en mode interprété. Pour cela, certains interpréteurs tels que IPython proposent un mode spécifique permettant d'instancier/utiliser ces objet graphiques. C'est très pratique pour tester ou découvrir les objet par la pratique.
Pour Ipython, depuis le prompt de l’interpréteur, saisir la fonction magique:
%gui gtk
Ci dessous un exemple de code tapé en mode interactif:
%gui gtk import gtk w = gtk.Window(gtk.WINDOW_TOPLEVEL) w.set_title("Hello PyGTK") txt= gtk.Label("GTK forever!") w.add(txt) txt.set_visible(True) w.set_visible(True)