GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

peterbrittain

asciimatics – cursesのような操作を行うためのクロスプラットフォームパッケージと、より高度なAPIとウィジェットを使用してテキストUIとASC..

投稿日:

cursesのような操作を行うためのクロスプラットフォームパッケージと、より高度なAPIとウィジェットを使用してテキストUIとASCIIアートアニメーションを作成する

ASCIIMATICS

Asciimaticsは、どのプラットフォームでも、フルスクリーンのテキストUI(インタラクティブフォームからASCIIアニメーションまで)を作成するのに役立つパッケージです。 これは、Apache Software Foundation License 2.0のライセンスを受けています。

どうして?

何故なの? 80年代にプログラミングをしていた人には少し楽しかったです…ああ、それはあなたが求めることができるすべての低レベルのコンソール機能を実行するための単一のクロスプラットフォームのPythonクラスを提供します:

  • 色付き/スタイル付きテキスト – 256色の端末とUnicode文字(CJK言語も含む)
  • カーソルの位置決め
  • ユニコードサポートを含むキーボード入力(ブロッキングまたはエコーなし)
  • マウス入力(端末許可)
  • コンソールのサイズ変更時の検出と処理
  • スクリーンスクレイピング

さらに、次のようなより複雑な機能を提供するためのシンプルでハイレベルなAPIを提供しています。

  • アンチエイリアス処理されたASCII線画
  • ASCIIからJPEGへの変換 – GIF形式
  • 多くのアニメーション効果 – スプライト、パーティクルシステム、バナーなど
  • ボタン、テキストボックス、ラジオボタンなどのテキストUI用のさまざまなウィジェット

現在のところ、このパッケージは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バージョン2と3をサポートしています。テストされているバージョンの正確なリストについては、 pypiを参照してください

asciimaticsをインストールするには、pipを次のようにインストールするだけです:

$ pip install asciimatics

これにより、すべての依存関係がインストールされます。 pipを使用しないか、pipをインストールできない場合、 requirements.txtにリストされているパッケージを使用して依存関係を直接インストールできます さらに、Windowsユーザー(pipを使用していないユーザー)は、pypiwin32をインストールする必要があります。

それの使い方?

低レベルの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.9/samplesを参照してください

それらを表示するには、これらのファイルをダウンロードして、単純にPythonで直接実行してください。 また、ギャラリーのサンプルの多くをhttps://github.com/peterbrittain/asciimatics/wikiで見ることもできます

バグと機能拡張

問題が発生した場合は、 http://asciimatics.readthedocs.io/en/latest/troubleshooting.htmlのトラブルシューティングガイドを参照してください これで問題が解決しない場合は、 https://github.com/peterbrittain/asciimatics/issuesでバグを報告する(または強化リクエストを送信する)ことができます

プロジェクトへの貢献

このプロジェクトに参加したい場合(そしてクレジットであなたの名前を参照してください)、 http://asciimatics.readthedocs.org/en/latest/intro.html#contributing-to-thisのガイダンスをご覧ください-project







-peterbrittain

執筆者: