View  Edit  Attributes  History  Attach  Print  Search

ACCUEIL | ARDUINO > S'INSTALLER > DEBUTER > APPROFONDIR | PROCESSING | MECATRONIQUE | MATERIEL | OUTILS | TESTS | Plus...|
Python > Shell > ATELIERS Python + Qt > PyQt apps > PyQt+Arduino | Mes Robots | RepRap | Mes lib'Arduino | Mes shields Arduino | Mes distros | Les Mini-PC |
ATELIERS ARDUINO| VIDEOS | COMPRENDRE | REFERENCES | CODER | TECHNIQUE | GNU/LINUX | LIENS | Rien à voir |

PYQT | Memo PyQt | Memo PyQwt

Premiers pas avec PyQt

(L'installation est réalisable sous Gnu/Linux (Ubuntu, Raspbian,..), Windows ou Mac)

Et aussi :

A venir... :

  • S'installer pour coder des interfaces graphiques (GUI) en Python + Qt sous MacOsX... en 5 minutes !
  • Utiliser une interface existante pour créer une nouvelle interface en quelques clics !
  • Réutiliser par simple copier/coller des éléments d'interfaces existantes pour créer une nouvelle interface !

Introduction

Coder de "vraies" GUI (interfaces graphiques) simplement...

  • Bien qu'elle soit très intéressante, l'interface Processing, opensource et multiplateforme, facile à utiliser, montre un certain nombre de limites :
    • utilise beaucoup de ressources CPU (repose sur Java) ce qui la rend inutilisable sur de petits systèmes, tel que le Raspberry-Pi
    • ne permet pas de créer facilement des interfaces graphiques (GUI) s'intégrant dans l'environnement graphique du système : les différents widgets graphiques sont émulés par des librairies spécifiques et n'ont pas un aspect "système".
  • Dès lors, pour pouvoir créer des programmes avec interface graphique, la question d'une alternative à la fois facile et relativement simple à mettre en oeuvre se pose. Tout en gardant bien sûr les très nombreuses possibilités de Processing, notamment 3D avec OpenGL, communication série avec Arduino, communication réseau, traitement d'image avec OpenCV, communication et contrôle du système par programmation
  • Une solution existe qui me paraît tout à fait pertinente : PyQt, association du langage Python et de l'interface graphique multiplateforme Qt.
    • Le langage Python est très puissant et rapide comparativement à Java, dispose de nombreux modules permettant d'utiliser le port série, le réseau, opencv, openGL... et même des librairies scientifiques, etc...
    • L'interface graphique Qt est multiplateforme et permet de créer facilement des applications disposant d'une "vraie" interface graphique, à l'aide notamment d'un utilitaire de design très puissant, Qt Designer. Qt intègre de nombreuses classes et fonctions facilitant l'affichage des images, la gestion des fichiers, etc...
  • Trêve de blabla, place à l'action !

Pour faire simple :

  • La solution que je vous propose ici :
    • utilise Python, langage interprété, de haut niveau, puissant, facile à utiliser et installer, disposant de nombreuses bibliothèques thématiques (réseau, série, calcul scientifique, opengl, opencv, etc...)
    • utilise Qt 4, une bibliothèque graphique multiplateforme, qui s'intègre parfaitement dans l'environnement de bureau utilisé, et qui dispose d'outils très intéressants pour aider au développement, notamment le logiciel Qt Designer qui permet de créer une interface graphique en quelques clics...

Pré-requis

Découvrir le langage Python

  • Nous allons ici utiliser le langage Python. Pourquoi ce langage demanderont certains ?
    • la première raison est que ce langage dit de haut niveau, est peu gourmand en ressources système comparativement à Java
    • il s'agit d'un langage "interprété" : les instructions sont donc exécutées "à la volée" sans compilation préalable :
      • ce qui permet de faire des tests en mode "ligne de commande", ce qui est très pratique pour apprendre
      • et ce qui évite d'avoir à compiler le code avant exécution et permet d'exécuter en direct le code depuis l'éditeur
    • ce langage est très souple en ce qui concerne l'utilisation des types, des boucles, des listes (tableaux de taille variable) et permet de coder en quelques lignes ce qui pourrait être assez complexe avec un autre langage
  • Pour suivre les tutos que je vous propose ici, connaître les bases de la programmation en général (notion de variables, type, classe, boucles, conditions, etc...), et notamment un autre langage (que ce soit Java, le C ou même Arduino) est souhaitable. Nul besoin d'être un expert en Python : connaître les bases fondamentales de ce langage sera cependant utile.
  • Voici un mémo personnel qui fait la correspondance entre le C/C++, le Java et le langage Python pour les situations les plus courantes, ce qui permettra de s'adapter plus facilement à partir d'un langage que l'on connaît : Comparatif simplifié de la syntaxe du Python, du C/C++ et du Java
  • Pour apprendre de façon plus approfondie le langage Python, le plus simple est d'utiliser le cours du site du Zéro, bien fait : http://www.siteduzero.com/tutoriel-3-223267-apprenez-a-programmer-en-python.html

Un système opérationnel

  • Les tutos présentés ici sont axés pour une utilisation sur un système Gnu/Linux, que ce soit un distribution Ubuntu ou encore un Raspberry-Pi avec une Raspbian installée. L'objectif ici est de permettre de réaliser simplement des interfaces graphiques, notamment sur des systèmes de type "embarqué".
  • Ceci étant, toutes les ressources utilisées (Python, Qt, etc...) sont multi-plateformes et sont à priori transposables facilement sous Mac Os X ou Windows. Les procédures détaillées seront présentées ultérieurement pour ces systèmes.

Ressources utiles