Asciimatics é um pacote para ajudar as pessoas a criar UIs de texto em tela inteira (de formulários interativos a animações ASCII) em qualquer plataforma. É licenciado sob a Licença Apache Software Foundation 2.0.
Por que não? Isso traz um pouco de alegria para quem estava programando nos anos 80... Ah, e fornece uma única classe Python multiplataforma para executar todas as funções de console de baixo nível que você poderia solicitar, incluindo:
Além disso, fornece algumas APIs simples e de alto nível para fornecer recursos mais complexos, incluindo:
Atualmente, foi comprovado que este pacote funciona no CentOS 6 e 7, Raspbian (ou seja, Debian wheezy), Ubuntu 14.04, Windows 7, 8 e 10, OSX 10.11 e Android Marshmallow (cortesia de https://termux.com), embora seja também deve funcionar para qualquer outra plataforma que forneça uma implementação funcional de maldições.
Deve ser independente de implementação e foi testado com sucesso em CPython e PyPy2.
(Informe-me se você o verificou com sucesso em outras plataformas para que eu possa atualizar esta lista).
Asciimatics suporta Python versão 3. Para obter a lista precisa de versões testadas, consulte pypi. A última versão do asciimatics com suporte ao Python 2 é a v1.14.
Para instalar o asciimatics, basta instalar com pip da seguinte maneira:
$ pip install asciimatics
Isso deve instalar todas as suas dependências para você. Se você não usa pip ou não consegue instalá-los, você pode instalar as dependências diretamente usando os pacotes listados em requisitos.txt. Além disso, os usuários do Windows (que não usam pip) precisarão instalar o pywin32.
Para usar a API de baixo nível, basta criar uma Tela e usá-la para imprimir texto colorido em qualquer local ou obter entrada do mouse/teclado. Por exemplo, aqui está uma variante do clássico “olá 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 )
Esse mesmo código funciona em Windows, OSX e Linux e abre caminho para todos os recursos de nível superior. Eles ainda precisam da Tela, mas agora você também cria uma Cena usando alguns Efeitos e depois pega a Tela para reproduzi-la. Por exemplo, 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 )
deve produzir algo assim:
Ou talvez você queira criar uma TUI? Nesse caso, este código simples fornecerá o seguinte:
A documentação completa de tudo acima (e muito mais!) Está disponível em http://asciimatics.readthedocs.org/
Mais exemplos do que você pode fazer estão disponíveis no diretório de amostras do projeto, hospedado no GitHub. Consulte https://github.com/peterbrittain/asciimatics/tree/v1.15/samples.
Para visualizá-los, basta baixar esses arquivos e executá-los diretamente com python. Alternativamente, você pode navegar pelas gravações de muitas das amostras na galeria em https://github.com/peterbrittain/asciimatics/wiki.
Se você tiver algum problema, verifique o guia de solução de problemas em http://asciimatics.readthedocs.io/en/latest/troubleshooting.html. Se isso não resolver seu problema, você pode relatar bugs (ou enviar solicitações de melhorias) em https://github.com/peterbrittain/asciimatics/issues.
Alternativamente, se você tiver apenas algumas dúvidas, sinta-se à vontade para entrar em https://gitter.im/asciimatics/Lobby.
Se você gostaria de participar deste projeto (e ver seu nome nos créditos!), Confira as orientações em http://asciimatics.readthedocs.org/en/latest/contributing.html