Asciimatics est un package destiné à aider les utilisateurs à créer des interfaces utilisateur en texte plein écran (des formulaires interactifs aux animations ASCII) sur n'importe quelle plateforme. Il est sous licence Apache Software Foundation License 2.0.
Pourquoi pas? Cela apporte un peu de joie à tous ceux qui programmaient dans les années 80... Oh, et il fournit une seule classe Python multiplateforme pour exécuter toutes les fonctions de console de bas niveau que vous pourriez demander, notamment :
De plus, il fournit des API simples de haut niveau pour fournir des fonctionnalités plus complexes, notamment :
Actuellement, il a été prouvé que ce package fonctionne sur CentOS 6 et 7, Raspbian (c'est-à-dire Debian Wheezy), Ubuntu 14.04, Windows 7, 8 et 10, OSX 10.11 et Android Marshmallow (avec l'aimable autorisation de https://termux.com), bien qu'il devrait également fonctionner pour toute autre plate-forme fournissant une implémentation fonctionnelle de malédictions.
Il doit être indépendant de la mise en œuvre et a été testé avec succès sur CPython et PyPy2.
(Veuillez me faire savoir si vous l'avez vérifié avec succès sur d'autres plateformes afin que je puisse mettre à jour cette liste).
Asciimatics supporte Python version 3. Pour la liste précise des versions testées, reportez-vous à pypi. La dernière version d'asciimatics prenant en charge Python 2 est la v1.14.
Pour installer les asciimatiques, installez simplement avec pip comme suit :
$ pip install asciimatics
Cela devrait installer toutes vos dépendances pour vous. Si vous n'utilisez pas pip ou si votre installation ne parvient pas, vous pouvez installer les dépendances directement à l'aide des packages répertoriés dans Requirements.txt. De plus, les utilisateurs Windows (qui n'utilisent pas pip) devront installer pywin32.
Pour utiliser l'API de bas niveau, créez simplement un écran et utilisez-le pour imprimer du texte en couleur à n'importe quel endroit, ou pour obtenir une saisie à la souris/au clavier. Par exemple, voici une variante du classique « hello world » :
from random import randint
from asciimatics . screen import Screen
def demo ( screen ):
while True :
screen . print_at ( 'Hello world!' ,
randint ( 0 , screen . width ), randint ( 0 , screen . height ),
colour = randint ( 0 , screen . colours - 1 ),
bg = randint ( 0 , screen . colours - 1 ))
ev = screen . get_key ()
if ev in ( ord ( 'Q' ), ord ( 'q' )):
return
screen . refresh ()
Screen . wrapper ( demo )
Ce même code fonctionne sous Windows, OSX et Linux et ouvre la voie à toutes les fonctionnalités de niveau supérieur. Ceux-ci ont toujours besoin de l'écran, mais maintenant vous créez également une scène en utilisant certains effets, puis vous demandez à l'écran de la lire. Par exemple, ce code :
from asciimatics . effects import Cycle , Stars
from asciimatics . renderers import FigletText
from asciimatics . scene import Scene
from asciimatics . screen import Screen
def demo ( screen ):
effects = [
Cycle (
screen ,
FigletText ( "ASCIIMATICS" , font = 'big' ),
int ( screen . height / 2 - 8 )),
Cycle (
screen ,
FigletText ( "ROCKS!" , font = 'big' ),
int ( screen . height / 2 + 3 )),
Stars ( screen , 200 )
]
screen . play ([ Scene ( effects , 500 )])
Screen . wrapper ( demo )
devrait produire quelque chose comme ceci:
Ou peut-être cherchez-vous à créer un TUI ? Auquel cas ce simple code vous donnera ceci :
La documentation complète de tout ce qui précède (et plus encore !) est disponible sur http://asciimatics.readthedocs.org/
D'autres exemples de ce que vous pouvez faire sont disponibles dans le répertoire d'exemples de projet, hébergé sur GitHub. Voir https://github.com/peterbrittain/asciimatics/tree/v1.15/samples.
Pour les visualiser, téléchargez simplement ces fichiers puis exécutez-les simplement directement avec python. Vous pouvez également parcourir les enregistrements de nombreux échantillons dans la galerie sur https://github.com/peterbrittain/asciimatics/wiki.
Si vous rencontrez un problème, veuillez consulter le guide de dépannage sur http://asciimatics.readthedocs.io/en/latest/troubleshooting.html. Si cela ne résout pas votre problème, vous pouvez signaler des bogues (ou soumettre des demandes d'amélioration) sur https://github.com/peterbrittain/asciimatics/issues.
Alternativement, si vous avez juste quelques questions, n'hésitez pas à nous contacter sur https://gitter.im/asciimatics/Lobby.
Si vous souhaitez participer à ce projet (et voir votre nom au générique !), consultez les conseils sur http://asciimatics.readthedocs.org/en/latest/contributing.html