Asciimatics — это пакет, который помогает людям создавать полноэкранные текстовые пользовательские интерфейсы (от интерактивных форм до анимации ASCII) на любой платформе. Он распространяется по лицензии Apache Software Foundation License 2.0.
Почему нет? Это приносит немного радости всем, кто программировал в 80-х... Да, и он предоставляет единственный кроссплатформенный класс Python для выполнения всех низкоуровневых консольных функций, которые вы можете попросить, включая:
Кроме того, он предоставляет несколько простых API-интерфейсов высокого уровня для реализации более сложных функций, включая:
В настоящее время доказано, что этот пакет работает на CentOS 6 и 7, Raspbian (т. е. Debian Wheezy), Ubuntu 14.04, Windows 7, 8 и 10, OSX 10.11 и Android Marshmallow (любезно предоставлено https://termux.com), хотя также должен работать на любой другой платформе, которая обеспечивает рабочую реализацию проклятий.
Он должен быть независимым от реализации и был успешно протестирован на CPython и PyPy2.
(Пожалуйста, дайте мне знать, если вы успешно проверили его на других платформах, чтобы я мог обновить этот список).
Asciimatics поддерживает Python версии 3. Точный список протестированных версий можно найти на сайте pypi. Последней версией асиматики, поддерживающей Python 2, является v1.14.
Чтобы установить asciimatics, просто установите с помощью pip следующим образом:
$ pip install asciimatics
Это должно установить все ваши зависимости. Если вы не используете pip или он не может их установить, вы можете установить зависимости напрямую, используя пакеты, перечисленные в файле require.txt. Кроме того, пользователям Windows (которые не используют pip) необходимо будет установить pywin32.
Чтобы использовать низкоуровневый API, просто создайте экран и используйте его для печати цветного текста в любом месте или получения ввода с помощью мыши/клавиатуры. Например, вот вариант классического «привет, мир»:
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 )
Тот же код работает в Windows, OSX и Linux и открывает путь ко всем функциям более высокого уровня. Им по-прежнему нужен Экран, но теперь вы также создаете сцену, используя некоторые эффекты, а затем заставляете Экран воспроизводить ее. Например, этот код:
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 )
должно выдать что-то вроде этого:
Или, может быть, вы хотите создать TUI? В этом случае этот простой код даст вам следующее:
Полная документация по всему вышеперечисленному (и не только!) доступна по адресу http://asciimatics.readthedocs.org/.
Дополнительные примеры того, что вы можете сделать, доступны в каталоге примеров проектов, размещенном на GitHub. См. https://github.com/peterbrittain/asciimatics/tree/v1.15/samples.
Чтобы просмотреть их, просто загрузите эти файлы, а затем запустите их непосредственно с помощью Python. Кроме того, вы можете просмотреть записи многих образцов в галерее по адресу https://github.com/peterbrittain/asciimatics/wiki.
Если у вас возникла проблема, ознакомьтесь с руководством по устранению неполадок по адресу http://asciimatics.readthedocs.io/en/latest/troubleshooting.html. Если это не решит вашу проблему, вы можете сообщить об ошибках (или отправить запрос на улучшение) по адресу https://github.com/peterbrittain/asciimatics/issues.
Альтернативно, если у вас просто есть вопросы, зайдите по адресу https://gitter.im/asciimatics/Lobby.
Если вы хотите принять участие в этом проекте (и увидеть свое имя в титрах!), ознакомьтесь с руководством по адресу http://asciimatics.readthedocs.org/en/latest/contributing.html.