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

Chapitre 1. Introduction

Table des matières

1.1. Exploring PyGTK

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 :

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).

1.1. 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 :

  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.