Les bases de PyQt

Harsh

Traducteur

Thibaut Cuvelier

Cet article est réservé aux débutants. On va y découvrir ce qu'est PyQt, ce qu'il fait et les composants principaux qu'il vaut mieux connaître avant de l'utiliser.

Commentez

- Titre : Les bases de PyQt

- Auteur : Harsh

- Traducteur : Thibaut Cuvelier

- Parution : 31 mai 2011

- Mise à jour : 2 février 2020

- Licence : Copyright ® 2009 Harsh. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Avertissement

- II. Qu'est-ce que PyQt ?

- III. Que comprend PyQt ?

- IV. Le module QtCore

- V. Le module QtGui

- VI. L'espace de noms Qt

- VII. Les outils de Qt

- VIII. Notes

- IX. Remerciements

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 cents 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é :

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 :

from PyQt4 import QtCore

Il contient toutes les classes essentielles et multiplateformes 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 :

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 : une 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 :

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.

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.

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

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 !