Asciimatics es un paquete para ayudar a las personas a crear interfaces de usuario de texto en pantalla completa (desde formularios interactivos hasta animaciones ASCII) en cualquier plataforma. Tiene la licencia Apache Software Foundation License 2.0.
¿Por qué no? Le trae un poco de alegría a cualquiera que estuviera programando en los años 80... Ah, y proporciona una única clase Python multiplataforma para realizar todas las funciones de consola de bajo nivel que pueda solicitar, incluyendo:
Además, proporciona algunas API simples de alto nivel para ofrecer funciones más complejas, que incluyen:
Actualmente, se ha demostrado que este paquete funciona en CentOS 6 y 7, Raspbian (es decir, Debian wheezy), Ubuntu 14.04, Windows 7, 8 y 10, OSX 10.11 y Android Marshmallow (cortesía de https://termux.com), aunque También debería funcionar para cualquier otra plataforma que proporcione una implementación funcional de curses.
Debería ser independiente de la implementación y se ha probado con éxito en CPython y PyPy2.
(Avíseme si lo verificó exitosamente en otras plataformas para que pueda actualizar esta lista).
Asciimatics admite la versión 3 de Python. Para obtener una lista precisa de las versiones probadas, consulte pypi. La última versión de asciimatics compatible con Python 2 es la v1.14.
Para instalar asciimatics, simplemente instale con pip de la siguiente manera:
$ pip install asciimatics
Esto debería instalar todas sus dependencias por usted. Si no usa pip o no puede instalarlos, puede instalar las dependencias directamente usando los paquetes enumerados en requisitos.txt. Además, los usuarios de Windows (que no usan pip) deberán instalar pywin32.
Para usar la API de bajo nivel, simplemente cree una pantalla y úsela para imprimir texto en color en cualquier ubicación, u obtener entrada del mouse/teclado. Por ejemplo, aquí hay una variante del clásico "hola mundo":
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 )
Ese mismo código funciona en Windows, OSX y Linux y allana el camino para todas las funciones de nivel superior. Estos todavía necesitan la pantalla, pero ahora también puedes crear una escena usando algunos efectos y luego hacer que la pantalla la reproduzca. Por ejemplo, este código:
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 )
debería producir algo como esto:
¿O tal vez estás buscando crear una TUI? En cuyo caso este código simple le dará esto:
La documentación completa de todo lo anterior (¡y más!) está disponible en http://asciimatics.readthedocs.org/
Más ejemplos de lo que puede hacer están disponibles en el directorio de ejemplos del proyecto, alojado en GitHub. Consulte https://github.com/peterbrittain/asciimatics/tree/v1.15/samples.
Para verlos, simplemente descargue estos archivos y luego ejecútelos directamente con Python. Alternativamente, puede buscar grabaciones de muchas de las muestras en la galería en https://github.com/peterbrittain/asciimatics/wiki.
Si tiene algún problema, consulte la guía de solución de problemas en http://asciimatics.readthedocs.io/en/latest/troubleshooting.html. Si esto no resuelve su problema, puede informar errores (o enviar solicitudes de mejora) en https://github.com/peterbrittain/asciimatics/issues.
Alternativamente, si solo tiene algunas preguntas, no dude en visitar https://gitter.im/asciimatics/Lobby.
Si desea participar en este proyecto (¡y ver su nombre en los créditos!), consulte la guía en http://asciimatics.readthedocs.org/en/latest/contributing.html