I. Chapitre 1. Introduction▲
PyGTK 2.0 est un ensemble de modules Python offrant une interface Python à GTK+ 2.0. Tout au long de ce document, le terme PyGTK fera référence à la version 2.X de PyGTK, et les termes GTK et GTK+ à la version 2.X de GTK+. Le site web principal de PyGTK est www.pygtk.org. L'auteur principal de PyGTK est :
- James Henstridge
lequel est aidé par les développeurs inscrits dans le fichier AUTHORS de la distribution PyGTK et par la communauté PyGTK.
Python est un langage de programmation interprété, orienté objet et extensible. Il est doté d'une grande panoplie de modules lui ouvrant l'accès aux services de nombreux domaines : système d'exploitation, Internet (HTML, XML, FTP, etc.), librairies graphiques (dont OpenGL, TK, etc.), courrier électronique (IMAP, SMTP, POP3, etc.), traitement des chaines de caractères, multimédia (audio, JPEG), cryptographie. On peut ajouter à ces modules de nombreux autres proposés par des tiers et qui augmentent encore les possibilités du langage. Python est placé sous une licence similaire à la LGPL et est disponible pour les systèmes d'exploitation Linux, Unix, Windows et Macintosh. Pour plus d'information, rendez-vous sur www.python.org. L'auteur principal de Python est :
- Guido van Rossum .
GTK (GIMP Toolkit) est une bibliothèque de création d'interfaces graphiques. Elle est placée sous licence LGPL, et peut donc être utilisée pour le développement de logiciels libres, open source, ou même commerciaux et non libres sans qu'il faille s'acquitter de quelconques droits d'auteur ou licences.
Écrite à l'origine pour le développement du logiciel de traitement d'image the GIMP (GNU Image Manipulation Program) — d'où son nom de GIMP Toolkit (boîte à outils de the GIMP) — GTK a depuis servi dans de nombreux projets logiciels, dont l'environnement de bureau GNOME (GNU Network Object Model Environment). GTK est bâti au-dessus de GDK (GIMP Drawing Kit), qui est essentiellement une encapsulation des fonctions de bas niveau permettant d'accéder au système de fenêtrage (Xlib dans le cas du système X window). Les auteurs principaux de GTK sont :
- Peter Mattis ;
- Spencer Kimball ;
- Josh MacDonald .
GTK est actuellement maintenu par :
- Owen Taylor ;
- Tim Janik .
GTK est principalement une interface de programmation d'application (API) orientée objet. Bien qu'écrite intégralement en C, elle est implémentée en utilisant le concept de classes et de fonctions de rappel (pointeurs sur fonctions).
Un troisième composant, appelé GLib, contient quelques remplacements d'appels standards, ainsi que des fonctions additionnelles pour gérer les listes chainées, etc. Les fonctions de remplacement permettent d'accroître la portabilité de GTK, car une fonction utilisée par un système Unix n'est pas forcément disponible ou standard sur un autre système (comme g_strerror(), par exemple). D'autres comportent des améliorations par rapport aux versions de la libc : g_malloc, par exemple, facilite le débogage.
Dans la version 2.0, GLib a intégré le système de typage qui pose les bases de la hiérarchie de classes de GTK, le système de signaux utilisé par GTK, une API de thread permettant de faire abstraction de celles utilisées par les différentes plates-formes, et une structure de chargement des modules.
Enfin, GTK utilise la bibliothèque Pango pour l'internationalisation du texte.
Ce tutoriel décrit l'interface Python de GTK+ et se base sur le Tutoriel GTK+ 2.0 écrit par Tony Gale et Ian Main. Il cherche à fournir une documentation aussi large que possible de PyGTK, mais n'est en aucun cas exhaustif.
Quelques connaissances de Python et de la manière de créer et d'exécuter des programmes dans ce langage vous seront nécessaires. En revanche, aucune connaissance préalable de GTK n'est requise ; si vous apprenez PyGTK pour découvrir GTK, vos appréciations sur ce tutoriel ainsi que vos commentaires sur les difficultés rencontrées seront les bienvenus. Nous n'aborderons ni la compilation ni l'installation de Python, GTK+ et PyGTK.
Ce tutoriel est basé sur :
- GTK+ 2.0 à travers GTK+ 2.4 ;
- Python 2.2 ;
- PyGTK 2.0 à travers PyGTK 2.4.
Les exemples originaux ont été écrits et testés sur une RedHat 9.0.
Ce document est en constant développement. Vérifiez l'existence de mises à jour sur www.pygtk.org.
N'hésitez pas à me (l'auteur) faire part des problèmes que vous rencontrez en apprenant PyGTK avec ce document, ainsi que de vos suggestions pour l'améliorer. Voyez la section "Contribuer" pour plus d'information. Si vous découvrez des erreurs, signalez-les sur bugzilla.gnome.org à propos du projet PyGTK. Les informations à propos de Bugzilla sur le site www.pygtk.org peuvent vous aider.
Le Manuel de référence de PyGTK 2.0 peut être consulté sur http://www.pygtk.org/pygtk2reference. Il décrit en détail les classes PyGTK.
Le site PyGTK (www.pygtk.org) contient des ressources supplémentaires utiles pour apprendre PyGTK, d'autres articles et tutoriels ainsi qu'une liste de diffusion active et un canal IRQ (voir les détails sur www.pygtk.org).
I-A. Exploring PyGTK▲
Johan Dahlin est l'auteur d'un petit programme Python pour Linux (pygtkconsole.py) qui permet une exploration interactive de PyGTK. Le programme comprend un interpréteur interactif comme celui de Python, qui communique avec un processus fils chargé d'exécuter les commandes saisies. Les modules PyGTK sont chargés par défaut. Voici un exemple de session :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
moe: 96
:1095
$ pygtkconsole.py
Python 2.2.2
, PyGTK 1.99.14
(
Gtk+
2.0.6
)
Interactive console to manipulate GTK+
widgets.
>>>
w=
Window
(
)
>>>
b=
Button
(
'Salut'
)
>>>
w.add
(
b)
>>>
def
salut
(
b):
... print
"Salut tout le monde !"
...
>>>
b.connect
(
'clicked'
, salut)
5
>>>
w.show_all
(
)
>>>
Salut tout le monde !
Salut tout le monde !
Salut tout le monde !
>>>
b.set_label
(
"Salut toi"
)
>>>
Ceci crée une fenêtre contenant un bouton, lequel affiche le message "Salut tout le monde !" lorsqu'on le clique. Ce programme permet de tester très facilement différents widgets GTK et interfaces PyGTK.
J'utilise aussi un programme développé par Brian McErlean : ActiveState recipe 65109 avec quelques modules pour l'adapter à PyGTK 2.X. Je l'appelle gpython.py. Il fonctionne de la même manière que pygtkconsole.py
Ces deux programmes ne fonctionnent pas avec Microsoft Windows, car ils se basent sur une interface spécifique Unix.