Asciimatics 是一个帮助人们在任何平台上创建全屏文本 UI(从交互式表单到 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 提供)上运行,尽管它也应该适用于任何其他提供有效的 Curses 实现的平台。
它应该与实现无关,并且已在 CPython 和 PyPy2 上成功测试。
(如果您在其他平台上成功验证,请告诉我,以便我更新此列表)。
Asciimatics 支持 Python 版本 3。有关测试版本的精确列表,请参阅 pypi。支持 Python 2 的 asciimatics 的最后一个版本是 v1.14。
要安装 asciimatics,只需使用 pip 进行安装,如下所示:
$ pip install asciimatics
这应该会为您安装所有依赖项。如果您不使用pip或者安装失败,您可以直接使用requirements.txt中列出的包来安装依赖项。此外,Windows 用户(不使用 pip)将需要安装 pywin32。
要使用低级 API,只需创建一个屏幕并使用它在任何位置打印彩色文本,或获取鼠标/键盘输入。例如,以下是经典“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 )
相同的代码可以在 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 上的指南