dimanche 26 juillet 2015

urwid: interface en mode texte (console) pour Python

Tkinter + megawidget offre de belles possibilités d'interfaces graphique d'autant que le projet pygubu (designer Tkinter pour python) semble encore très actifs.
Il n'empêche que de telles interfaces consommes pas mal d'énergie pour une première mise en oeuvre.

Nos petits projets n'ont pas toujours besoin d'autant de raffinement et dans de nombreux cas, une petite interface en mode texte (console) serait bien suffisante à notre confort.

NCusrse
NCurse l'outil le plus connu pour dessiner des interfaces en mode texte sous Python. Il est assez facile de trouver de la documentation sur le Net.
C'est pas mal mais un peu barbare. La aussi il y a un certain investissement avant d'être productif.

Snack
J'ai déniché snack en m'intéressant à Grub. Il s'agit d'une interface en mode texte pour Python dont le but est de pouvoir facilement réaliser des outils de configuration système. Il va de soi, pas question de compter sur XWindows lorsque l'on fait de l'administration a distance en ssh. Snack peut donc faciliter la vie dans certains cas.
Snack vaut peut être la peine de s'y pencher, voici quelques liens pour référence:
urwid
Urwid semble être un projet très intéressant car il permet la réalisation d'interface texte de façon "Pythonique".
Ce fut une découverte un peu fortuite sur une vidéo YouTube traitant des interfaces en mode texte.

Le code est agréable à lire et assez facile à comprendre (voir exemple dans le vidéo ci-dessus). Cela en fait un outil de choix à étudier d'autant qu'il ne manque pas d'exemples sur le site urwid.org.

Note complémentaire:
Mon but étant de construire rapidement une petite interface de gestion avec un interface acceptable. Je me suis heurté à la complexité du Framework de Urwid. Il m'aura fallut 8 heures pour réaliser un menu et un premier écran (dont je ne suis vraiment pas satisfait).

En fin de compte, la lourdeur du Framework d'Urwid (composant de type Block et les autres de type Flow ainsi que le mix Block + Flow) aura raison de ma patiente. 8 Heures plus tard je suis toujours au point de départ (ou presque).
Résultat: J'abandonne Urwid.

Cela ne signifie pas qu'Urwid ne conviennent pas pour des projets de plus grandes envergures mais quitte à faire un tel investissement d'apprentissage alors je préfère le faire dans Tkinter pour Python.


L'installation passe par un simple:

apt get install python-urwid


Voici quelques ressources complémentaires:
S'y retrouver dans urwid ne coule pas de source (surtout à cause des "décorations" widget). Le liens suivant permet de fixer les idées plus facilement après les premiers tuto.
A voir aussi

Aucun commentaire: