[wiki: Interfaces graphiques]
#!comment
Loic recommande PyQT ou PySide
PySide ?
http://reseau-loops.github.io/journee_2014_06.html
—-
Tkinter
Encapsulation de Tcl/Tk, livrée avec Python.
Exemple :
#!python
import Tkinter as tk
# il suffit alors de déclarer l'objet Tk()
# qui deviendra la fenêtre principale
fenetre = tk.Tk()
# on crée ensuite un objet Label()
# rattaché à fenetre
# pour afficher du texte non éditable
# on profite du constructeur de l'objet
# pour définir un texte "Hello World"
# dans la foulée (on peut faire autrement)
texte = tk.Label ( fenetre, text="Hello World" )
# l'objet Label() nommé texte est ensuite
# rendu visible dans fenetre grâce à pack()
texte.pack()
# pour finir, on lance la boucle programme
fenetre.mainloop()
En Python 3, Tkinter devient tkinter.
NDLR, question à creuser : si une application est développée avec Tkinter, est-ce que la distribution du produit peu inclure TCL/TK, ou est-ce qu’il faut imposer aux utilisateurs une pré-installation de TCL/TK ?
—-
wxPython
Bibliothèque multi-plateformes pour développer des interfaces graphiques, basée sur la bibliothèque C++ wxWidgets . 5 modules :
- Windows : Fenêtres, boites de dialogue, frames, etc.
- GDI : Graphics Device Interface, utilisé pour dessiner.
- Core : Objets de base, parents des autres.
- Misc : Logging, joysticks, config. applications, etc.
- Controls : Boutons, toolbar, etc.
Fenêtre simple :
- App() : Créer l’application principale (unique).
- Frame() : Créer une fenêtre.
- Show() : Afficher la fenêtre.
- !MainLoop() : Lancer l’application.
- Move() / MoveXY() : Positionner une fenêtre.
- !SetPosition() : Positionner une fenêtre.
- !SetDimensions() : Positionner et dimensionner une fenêtre.
- Center() : Centrer la fenêtre sur l’écran.
- !GetClassName() : Récupérer la classe d’un objet.
- !GetValue() : Récupérer la valeur d’un objet.
Composants standards :
- Button() : Bouton classique.
- !ToggleButton() : Bouton à deux états.
- !RadioButton() : Bouton radio.
- !StaticLine() : Ligne horizontale ou verticale.
- !StaticText() : Etiquette de texte.
- !StaticBox() : Boite encadrée.
- !ComboBox() : Boite de liste de choix.
- !CheckBox() : Case à cocher.
- !StatusBar() : Barre de statut.
- Gauge() : Barre de progression.
- Slider() : Potentiomètre linéaire.
- !SpinCtrl() : « Roulette » numérique.
Exemples :
- [raw-attachment:code_wx_1.py code_wx_1.py]
- [raw-attachment:code_wx_2.py code_wx_2.py]
- [raw-attachment:code_wx_3.py code_wx_3.py]
- [raw-attachment:code_wx_4.py code_wx_4.py]
- [raw-attachment:code_wx_5.py code_wx_5.py]
- [raw-attachment:code_wx_6.py code_wx_6.py]
A retenir :
- Beaucoup de choses disponibles :
- En terme de composants graphiques.
- D’exemples de contrôles graphiques.
- Librairie graphique complète.
- Pas d’éditeur d’interfaces graphiques : il faut construire les interfaces « à la main ».
NDLR, question à creuser : si une application est développée avec wxPython, est-ce que la distribution du produit peu inclure wxWidgets, ou est-ce qu’il faut imposer aux utilisateurs une pré-installation de wxWidgets ?
#!html
<br clear=right>
—-
PyQt
Bibliothèque multi-plateformes basée sur Qt (C++).
Offre des composants pas seulement graphiques :
- Interface graphique (widgets).
- Accès aux données.
- Connexions réseaux.
- Gestion des fils d’exécution.
- Analyse XML.
- Etc.
Modules internes :
- !QtCore, fonctionnalités non graphiques : fichiers, types, threads, etc.
- QtGUI, composants graphiques : boutons, fenêtres, barre d’outils, couleurs, etc.
- !QtNetwork : programmation autour du réseau.
- !QtXml : gestion fichiers XML avec SAX/DOM.
- !QtSvg : gestion fichiers SVG.
- !QtOpenGL : gestion affichage 2D/3D.
- !QtSql : gestion des bases de données.
Exemples de base :
- Fenêtre simple : [raw-attachment:code_qt_01.py code_qt_01.py].
- Icône pour une fenêtre : [raw-attachment:code_qt_02.py code_qt_02.py].
- Tooltips : [raw-attachment:code_qt_03.py code_qt_03.py].
- Bouton « Quitter » : [raw-attachment:code_qt_04.py code_qt_04.py].
- Boites de dialogue standards : [raw-attachment:code_qt_05.py code_qt_05.py].
- Centrage sur l’écran : [raw-attachment:code_qt_06.py code_qt_06.py].
A retenir :
- Demande de connaître les bases avant.
- Qt est maintenu et multi-plateformes.
- Beaucoup de contrôles disponibles.
- Possible de personnaliser ses propres contrôles.
- Trouver de nouveaux contrôles :
- http://code.google.com/p/pyqt4-extrawidgets/
- http://qt-apps.org/
- Existe un constructeur d’interfaces : !QtDesigner.
NDLR, question à creuser : si une application est développée avec PyQT, est-ce que la distribution du produit peu inclure Qt, ou est-ce qu’il faut imposer aux utilisateurs une pré-installation de Qt ?
—-
Diverses références
—-