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。支援 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 上的指南