1Interfaces Graphiques (GUI) - .• Boite   outils Qt et PyQt. 1Interfaces Graphiques (GUI)

  • View
    226

  • Download
    6

Embed Size (px)

Text of 1Interfaces Graphiques (GUI) - .• Boite   outils Qt et PyQt. 1Interfaces...

  • Ce tutoriel est bas sur l'excellentissime tutoriel C++ http://www.siteduzero.com/tutoriel-3-11240-introduction-a-qt.htmlJe n'ai fait que l'adapter aux spcificit de python et PyQt

    Prrequis : POO (Programmation Oriente Objet) et Python.

    Nous supposerons que PyQt est dj install et configur.

    Sommaire du chapitre :

    Interfaces graphiques Qt, PyQt et PiSide Boite outils Qt et PyQt

    http://www.siteduzero.com/tutoriel-3-11240-introduction-a-qt.html

  • 1 Interfaces Graphiques (GUI)

    Programme sans GUI (console)

    Programme GUI, ici sous Linux

    2 choix : application crite spcialement pour l'OS => non portable. bibliothque qui s'adapte tous les OS, (multi-plateforme).

  • Il existe plthore de boites outils pour le dveloppement d'interfaces graphiques :

    Qt Windows, Mac and GNU/Linux LGPL C++, Python, Java, C#, Ruby, Ada, Pascal, Perl, PHP, Lua, Dao, Tcl, Lisp, D, Harbour

    FLTK UNIX/Linux (X11), Windows, and MacOS

    LGPL 2 C++, Ruby, Tcl, Lua, Python

    FOX Linux, FreeBSD, MS-Window LGPL C++, Python, Ruby and Eiffel

    GTK+ Windows, GNU/Linux and Unix, OSX and mobile devices

    LGPL 2.1 C++ ,C# , Java , Python , JavaScript, Vala, Perl, Lua, Guile , Ruby , PHP, Ada , OCaml, D , Harbour

    Ultimate++ Windows, Linux/FreeBSD, Mac OS C++

    MFC (Microsoft Foundation Classes) Windows Visual Studio obligatoire

    Tkinter Windows, Mac OS, GNU/Linux Python Licence

    python

    VCF Windows BSD License C++, Lua

    WideStudio Windows, Linux, FreeBSD, MacOSX

    trs permissive

    C/C++, Java, Perl, Ruby, Python,Objective, Caml

    wxWidgets Windows, Mac OS, GNU/Linux, FreeBSD

    LGPL + C++, python, perl, java, lua, eiffel, C# (.NET), basic, ruby, javascript

  • 1.1 Les bibliothques propres aux OS

    Chaque OS propose au moins une bibliothque qui permet de crer des fentres.

    Windows : API Win32. Bibliothque Complexe utilisable dans tous les langages (C, C++, Java, Python...) L'API Win32 est un ensemble de fonctions. Non POO . => Surcouche MFC oriente objet remplace par la bibliothque .NET multi-plateforme.

    Mac OS X : Cocoa. "Objective C", java, python oriente objet.

    Linux : X = base des interfaces graphiques de Linux. Xlib, mais on programme rarement en Xlib. plus simple d'utilisation et multi-plateforme : GTK+ ou Qt.

  • 1.2 Les bibliothques multi-plateforme

    Avantages : Simplification de la cration d'une fentre. uniformisation, ensemble cohrent facile de s'y retrouver. Noms des fonctions et des classes choisis de manire logique. indpendantes du systme d'exploitation et de la version du systme. Bibliothques prennes.

    Voici quelques-unes des principales bibliothques multi-plateforme connatre, au moins de nom : .NET (prononcez "Dot Net") : successeur de Win32. Souvent associ C#, langage cr par Microsoft. NET est portable car Microsoft

    a expliqu son fonctionnement. .NET port sous Linux avec Mono. GTK+ : une des plus importantes bibliothques utilises sous Linux. Elle est portable : Linux, Mac OS et Windows. GTK+ est utilisable

    en C, en C++ (GTKmm)Trs utilise par Gnome, mais fonctionne aussi sous KDE. =>Firefox par exemple.

    Qt : trs utilise sous Linux, en particulier KDE. partir de Qt 4.5, licence LGPL v2.1[ wxWidgets : bibliothque objet trs complte, comparable Qt. Licence plus ouverte que celle de Qt. Mais Qt plus facile prendre en

    main au dbut. FLTK : lgre. Ddie la cration d'interfaces graphiques multi-plateforme.

    Alors Qt ou wxWidgets ?

    Qt plus facile prendre en main (plus "pdagogique").Qt trs bien documentQt plus qu'une bibliothque de widgets, mais un framework comple

    http://fr.wikipedia.org/wiki/Qt#cite_note-lgpl-9http://fr.wikipedia.org/wiki/Mono_(logiciel)

  • 2 Qt, PyQt, PySideQt est une bibliothque multi-plateforme pour crer des GUI (programme sous forme de fentre).Qt crite en C++, elle est faite pour tre utilise la base en C++, mais il est aujourd'hui possible de l'utiliser dans d'autres langages comme Java, Python, etc.

    PyQt est un module libre qui permet de lier le langage Python avec la bibliothque Qt distribu sous deux licences : une commerciale et la GNU GPL. Il permet ainsi de crer des interfaces graphiques en python. Une extension de QtDesigner (utilitaire graphique de cration d'interfaces Qt) permet de gnrer le code Python d'interfaces graphiques.Le 18 aot 2009, aprs des pourparlers avec les auteurs de PyQt pour un changement de licence[1], Nokia distribue sa propre bibliothque de lien entre Python et Qt : pyside[2], sous une licence plus permissive, la licence publique gnrale limite GNU (LGPL).

    http://fr.wikipedia.org/wiki/PyQt#cite_note-1http://fr.wikipedia.org/wiki/PyQt#cite_note-0

  • 2.1 Plus qu'une bibliothque : un framework

    plus qu'une bibliothque : un ensemble de bibliothques. On parle plutt de framework.Qt est la base faite pour crer des fentres, c'est sa fonction centrale. Mais ce serait dommage de limiter Qt a.

    Les modules Qt : Module GUI : c'est toute la partie cration de fentres. Nous nous concentrerons surtout sur le module GUI dans ce cours. Module OpenGL : Qt peut ouvrir une fentre contenant de la 3D gre par OpenGL. Module de dessin : pour dessiner dans leur fentre (en 2D), module de dessin trs complet ! Module rseau : pour accder au rseau, Chat, client FTP, client Bittorent, lecteur de flux RSS... Module SVG : cration images et animations vectorielles, la manire de Flash. Module de script : Qt supporte le Javascript (ou ECMAScript), Module XML : changer des donnes avec des fichiers forms l'aide de balises, un peu comme le XHTML. Module SQL : accs aux bases de donnes (MySQL, Oracle, PostgreSQL...).

    Avec l'volution de Qt 4, d'autres modules sont conus : QtDBus : pour la communication inter-processus en utilisant D-Bus (uniquement sous Unix partir de Qt 4.2) ; QtSvg : pour l'affichage d'images aux formats SVG ( partir de Qt 4.1) ; QtUiTools : pour charger dynamiquement les interfaces graphiques cres avec Qt Designer ( partir de Qt 4.1) ; QtTest : pour effectuer des tests unitaires ( partir de Qt 4.1) ; QtScript : pour l'valuation de scripts utilisant Qt Script ( partir de Qt 4.3) ; QtWebKit : portage du moteur de rendu web WebKit ( partir de Qt 4.4) ; QtXmlPatterns : pour manipuler des documents XML via XQuery et XPath ( partir de Qt 4.4); Phonon : intgration de Phonon, framework multimdia de KDE 4, dvelopp en collaboration avec la communaut KDE ( partir de Qt

    4.4) ; QtScriptTools : divers outils pour QtScript comme un dbogueur ( partir de Qt 4.5).

    Qt n'est pas gros, Qt est normeOn se concentrera ici surtout sur la partie GUI.Pour aller plus loin, lire la documentation officielle (uniquement en anglais, comme toutes les documentations pour les programmeurs de toute faon). Documentation est trs bien faite.

    Cf chapitre suivant comment naviguer dans cette documentation.

    http://doc.trolltech.com/http://fr.wikipedia.org/wiki/D%C3%A9bogueurhttp://fr.wikipedia.org/wiki/KDEhttp://fr.wikipedia.org/wiki/KDE_4http://fr.wikipedia.org/wiki/Frameworkhttp://fr.wikipedia.org/wiki/Phonon_(KDE)http://fr.wikipedia.org/wiki/XPathhttp://fr.wikipedia.org/wiki/XQueryhttp://fr.wikipedia.org/wiki/WebKithttp://fr.wikipedia.org/wiki/QtWebKithttp://fr.wikipedia.org/wiki/Langage_de_scripthttp://fr.wikipedia.org/wiki/Test_unitairehttp://fr.wikipedia.org/wiki/Scalable_Vector_Graphicshttp://fr.wikipedia.org/wiki/D-Bushttp://fr.wikipedia.org/wiki/Communication_inter-processus

  • 2.2 Qt est multiplateforme

    Qt est un framework multiplateforme. Je le sais je me rpte, mais c'est important de l'avoir bien compris. Tenez, d'ailleurs voil un schma qui illustre le fonctionnement de Qt :

    Vous codez pour Qt, et Qt traduit les instructions pour l'OS.

    Voici une dmonstration de ce que je viens de vous dire. Vous avez ci-dessous le mme programme, donc la mme fentre cre avec Qt, mais sous diffrents OS. Vous allez voir que Qt s'adapte chaque fois :

  • Sous Windows Vista Sous Windows XP

    Sous Linux Sous Mac OS X

    Le mme programme python s'adapte automatiquement tous les OS.L'avantage du C++ par rapport python est sa rapidit (bien que la diffrence se sente de moins en moins, sauf pour dans les jeux vido qui ont besoin de rapidit et qui sont donc majoritairement cods en C++), mais le programme C++ ncessite une compilation distincte pour chaque OS.

  • 2.3 L'histoire de Qt

    Qt s'crit "Qt" et non "QT", donc avec un "t" minuscule )Qt signifie "Cute" (prononcez "Quioute"), ce qui signifie "Mignonne", parce que les dveloppeurs trouvaient que la lettre Q tait jolie dans leur diteur de texte.

    Qt est une framework dvelopp par la socit Trolltech, base Oslo en Norvge.Dveloppement de Qt initi en 1991 et il a t ds le dbut utilis par KDE, un des principaux environnements de bureau de Linux.

    En janvier 2008, Nokia lance une OPA amicale pour racheter Qt et Trolltech. Trolltech, renomm en Qt Software, devient une division de Nokia. En janvier 2009 Nokia abaisse au maximum les barrires pour faciliter l'adoption de Qt, qui depuis est utilis par leur dveloppements en interne :

    ajout d'une licence plus permissive que la GPL, la LGPL ; ouverture du dveloppement des dveloppeurs externes en rendant accessible le dpt de Qt.

    http://fr.wikipedia.org/wiki/D%C3%A9p%C3%B4t_(informatique)http://fr.wikipedia.org/wiki/Licence_publique_g%C3%A9n%C3%A9rale_limit%C3%A9e_GNUhttp://fr.wikipedia.org/wiki/2009http://fr.wikipedia.org/wiki/Janvier_2009http://fr.wikipedia.org/wiki/Qt_Softwarehttp://fr.wikipedia.org/wiki/Qt_Softwarehttp://fr.wikipedia.org/wiki/Offre_publique_d'achathttp://fr.wikipedia.org/wiki/Nokiahttp://fr.wikipedia.org/wiki/2008http://fr.wikipedia.org/wiki/Janvier_2008http://www.trolltech.com/