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 を使用しない場合、または 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 でガイダンスを確認してください。