TUTORIEL JAVA 
Aborder Qt avec Python
Présentation de Qt, bibliothèque Open Source autorisant la création d'interfaces natives multiplate-formes, au travers de son implémentation Python, PyQt4. (31/05/2006)
<< 1. Instalation et comparaison avec Tkinter
2. Avantages de Qt, signal/slot

Les avantages de Qt sur Tkinter
Un programmeur Python choisira par défaut Tkinter, car il est directement fourni avec le langage, et est conçu et soutenu par les développeurs de ce dernier. Historiquement, Tkinter est apparemment le bon choix.

Qt dispose cependant de nombreux atouts face à Tkinter. Pour commencer, Qt (et même son implémentation Python) est extrêmement rapide. Il dispose par ailleurs d'une grande collection d'éléments graphiques, et d'un mécanisme qui le place à part : signal/slots.

Il s'agit là d'un mécanisme assurant la transmission d'évènements et de messages entre éléments graphiques, et plus largement entre les objets Qt. Son orientation Objet le rend extrêmement flexible et plus facile à maintenir que le mécanisme de rappel (callback) utilisé généralement. Dans les faits, plus l'application est large, plus ce mécanisme signal/slot prouve son utilité.

Dans le raisonnement Qt, un slot correspond à tout élément pouvant être appellé (méthode, fonction, expression lambda...), tandis qu'un signal est le message qui est passé entre objets. Qt est écrit en C++, donc Python doit gérer les signaux C++, et les adaptés à son propre système de signalement.

Typiquement, un signal Qt (donc C++) est lié à un slot Python de la manière suivante :
  1. QObject.connect(un_objet, SIGNAL('une_fonction(bool)'), un_element_python_appellable)
QApplication.connect() est la méthode qui prend cette gestion signal/slot en charge. Elle prend 4 paramètres : l'objet qui envoie le signal, le signal lui-même, l'objet qui reçoit le signal, et le slot.

Le fonctionnement est comme suit : les objets héritant de QObject émettent des signaux quand ils reçoivent des événements. Ces signaux peuvent être connectés à des slots, qui sont donc appelés automatiquement quand l'objet premier reçoit un évènement donné. Pour une sécurité optimale, les paramètres d'un signal et d'un slot doivent être de même type.

  Forum

Réagissez dans les forums de JDN Développeurs

Un même signal peut être connecté à plusieurs slots, tout comme plusieurs signaux peuvent viser le même slot. Vu que l'objet premier ignore qui reçoit le signal (ou s'il est même reçu), ce mécanisme est très modulaire. Un changement d'état peut donc voir son influence se propager indépendamment.

<< 1. Instalation et comparaison avec Tkinter
2. Avantages de Qt, signal/slot
 
Xavier Borderie, JDN Développeurs
 
Accueil | Haut de page
 
 





Quand achetez-vous le plus en ligne ?
Du lundi au vendredi
Le samedi
Le dimanche

Tous les sondages