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 :
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 :
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 (boite à 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 :
GTK is currently maintained by:
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
standard, ainsi que des fonctions additionnelles pour gérer les listes chainées, etc.
Les fonctions de remplacement permettent d'accroitre 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
(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 plateformes, 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 exécuter
des programmes dans ce langage vous seront nécessaires. Si vous ne connaissez
pas bien Python, je vous recommande la lecture du
Tutoriel Python. 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 through GTK+ 2.4
- Python 2.2
- PyGTK 2.0 through 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.
L'information à 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, y compris
un lien vers la FAQ,
d'autres articles et tutoriels ainsi qu'une liste de diffusion active et un
canal IRQ ( voir les détails sur
www.pygtk.org).
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 :
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
Note
Ces deux programmes ne fonctionnent pas avec Microsoft Windows car ils se
basent sur une interface spécifique Unix.