BibliosGui

[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

—-


Attachments