I. Avertissement

Si vous êtes intéressé par PyQt mais sans savoir ce qu'il en est, il est préférable de lire l'introduction.

II. Qu'est-ce que PyQt ?

PyQt est un module Python qui permet d'accéder à la bibliothèque Qt de Nokia.

Il s'agit d'un framework applicatif multiplateforme : une même application PyQt fonctionne sans problème sous OS X, Linux et Windows.

C'est aussi un gros module de plus de trois cent classes, de six mille fonctions.

Il fournit un ensemble complet de classes utiles qui fournissent des interfaces pour l'accès aux fichiers, parser du XML, des structures de données et plus, ainsi que des outils comme Qt Designer, Qt Assistant et Qt Linguist pour concevoir des interfaces, accéder à l'aider et faciliter les traductions.

C'est donc un framework complet : il fournit des classes qui gèrent les types basiques de données comme celles qui effectuent des tests unitaires.

PyQt est développé par Phil Thompson, chez Riverbank Computing Limited.

III. Que comprend PyQt ?

Les composants majeurs de PyQt sont :

  • le module QtGui, pour tout ce qui concerne les GUI ;
  • le module QtCore, pour tout ce qui ne concerne pas les GUI ;
  • l'espace de noms Qt, pour les types et autres identifiants ;
  • les outils Qt, pour d'autres tâches variées.

Le paquet PyQt dans Python, une fois installé, peut être facilement importé :

 
Sélectionnez
import PyQt4

D'autres modules plus spécialisés sont aussi disponibles : QtHelp, QtOpenGL, QtScript, QtXml, QtSql, QtTest et bien d'autres.

Des scripts pour les ressources, interfaces et traductions sont aussi fournis, pour compatibilité avec son pendant C++.

IV. Le module QtCore

On peut l'importer directement :

 
Sélectionnez
from PyQt4 import QtCore

Il contient toutes les classes essentielles et multiplatformes qui forment le squelette de toute application PyQt. Elles vont des chaînes de caractères à la gestion des processus, des entrées et des sorties, ainsi que diverses structures de données.

Quelques exemples de classes :

  • QString : elle stocke et manipule des chaînes de caractères ;
  • QFile : elle effectue des opérations d'entrée et de sortie sur des fichiers ;
  • QProcess : elle lance des programmes externes ;
  • QRect : une classe géométrique de rectangle ;
  • QDate : elle fournit des fonctions sur les dates.

On peut évidemment trouver la liste complète des classes de QtCore.

V. Le module QtGui

On peut l'importer directement :

 
Sélectionnez
from PyQt4 import QtGui

Il contient tous les éléments GUI fournis par Qt, d'un simple label à la complexe vue graphique. Tous les éléments de GUI dans PyQt sont appelés des « widgets ».

Quelques exemples :

  • QLabel : un simple widget affichant une image ou un texte riche ;
  • QLineEdit : un zone d'entrée sur une ligne ;
  • QPushButton : un bouton standard qui peut être pressé ;
  • QCheckBox : une simple case à cocher, avec deux ou trois états.

QtGui étend de manière naturelle QtCore, en donnant à chacune de ses fonctionnalités une interface graphique.

On peut évidemment trouver la liste complète des classes de QtGui.

VI. L'espace de noms Qt

On peut l'importer directement :

 
Sélectionnez
from PyQt4.QtCore import Qt

Sinon, il est accessible via l'espace de noms QtCore.Qt.

Il contient tous les identifiants, aux objectifs divers, des comportements GUI pour la plupart.

Ces constantes fournissent de multiples options utilisables pour définir le comportement d'un widget, sa position, etc.

Quelques exemples :

  • Alignment : pour aligner le texte sur un widget de différentes manières ;
  • Axis : pour choisir l'axe X, Y ou Z pour une transformation ;
  • BrushStyle : pour choisir un style de pinceau approprié ;
  • UIEffect : pour définir des effets comme une animation, un dégradé, etc.

On peut évidemment trouver la liste complète des identifiants de Qt.

VII. Les outils de Qt

Qt Designer est prévu pour concevoir des GUI et les sauvegarder dans un format XML (.ui), qui peut alors être converti en fichier source Python avec le script pyuic4.

Image non disponible

Qt Assistant fournit toutes les références de toutes les classes avec recherche, ainsi que d'autres documents utiles sur la bibliothèque Qt. Un outil très utile pour un programmeur.

Image non disponible

Qt Linguist aide à traduire les chaînes des applications en différentes langues, fournissant ainsi une internationalisation facile d'un produit.

Image non disponible

Tous ces outils sont installés avec le framework Qt, pas PyQt, qui ne fait que fournir des scripts pour les porter à Python.

VIII. Notes

La meilleure manière d'apprendre à utiliser Qt est de suivre la documentation, par exemple avec Qt Assistant, qui vient avec lui. Bien que prévue pour le C++, l'utilisation que l'on en fait en Python n'est pas très différente. Qt n'est pas seulement partout sur toutes les plateformes, il est aussi sur tous les langages, Ruby, Python, C++, Java et d'autres.

Si vous voulez vous référer à un livre, Rapid GUI Programming with Python and Qt, de Mark Summerfield ou GUI Programming with Python: Qt Edition, de Boudewijn Rempt. Mon préféré, cependant, est C++ GUI Programming with Qt, de Jasmin Blanchette et Mark Summerfield. Bien qu'il soit en C++, il a une bonne approche.

IX. Remerciements

Merci à Harsh pour l'autorisation de traduire son article, Basics of PyQt !

Merci à Jean-Philippe André et djibril pour leur relecture orthographique !