Asciimatics ist ein Paket, das Menschen dabei hilft, Vollbild-Text-Benutzeroberflächen (von interaktiven Formularen bis hin zu ASCII-Animationen) auf jeder Plattform zu erstellen. Es ist unter der Apache Software Foundation License 2.0 lizenziert.
Warum nicht? Es bereitet jedem, der in den 80er Jahren programmiert hat, ein wenig Freude ... Oh, und es bietet eine einzige plattformübergreifende Python-Klasse, die alle Low-Level-Konsolenfunktionen ausführt, die man sich nur wünschen kann, einschließlich:
Darüber hinaus bietet es einige einfache High-Level-APIs, um komplexere Funktionen bereitzustellen, darunter:
Derzeit funktioniert dieses Paket nachweislich unter CentOS 6 und 7, Raspbian (d. h. Debian Wheezy), Ubuntu 14.04, Windows 7, 8 und 10, OSX 10.11 und Android Marshmallow (mit freundlicher Genehmigung von https://termux.com). sollte auch für jede andere Plattform funktionieren, die eine funktionierende Curses-Implementierung bietet.
Es sollte Implementierungsunabhängig sein und wurde erfolgreich auf CPython und PyPy2 getestet.
(Bitte teilen Sie mir mit, ob Sie es auf anderen Plattformen erfolgreich verifiziert haben, damit ich diese Liste aktualisieren kann.)
Asciimatics unterstützt Python Version 3. Die genaue Liste der getesteten Versionen finden Sie unter pypi. Die letzte Version von asciimatics, die Python 2 unterstützt, ist v1.14.
Um asciimatics zu installieren, installieren Sie es einfach mit pip wie folgt:
$ pip install asciimatics
Dadurch sollten alle Ihre Abhängigkeiten für Sie installiert werden. Wenn Sie pip nicht verwenden oder die Installation fehlschlägt, können Sie die Abhängigkeiten direkt mithilfe der in „requirements.txt“ aufgeführten Pakete installieren. Darüber hinaus müssen Windows-Benutzer (die Pip nicht verwenden) pywin32 installieren.
Um die Low-Level-API zu verwenden, erstellen Sie einfach einen Bildschirm und verwenden Sie ihn, um farbigen Text an einer beliebigen Stelle zu drucken oder Maus-/Tastatureingaben zu erhalten. Hier ist zum Beispiel eine Variante des klassischen „Hallo Welt“:
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 )
Derselbe Code funktioniert unter Windows, OSX und Linux und ebnet den Weg für alle übergeordneten Funktionen. Diese benötigen immer noch den Screen, aber jetzt erstellen Sie auch eine Szene mit einigen Effekten und lassen sie dann vom Screen abspielen. Zum Beispiel dieser Code:
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 )
sollte etwa so etwas ergeben:
Oder möchten Sie vielleicht eine TUI erstellen? In diesem Fall erhalten Sie mit diesem einfachen Code Folgendes:
Die vollständige Dokumentation aller oben genannten Punkte (und mehr!) ist unter http://asciimatics.readthedocs.org/ verfügbar.
Weitere Beispiele dafür, was Sie tun können, finden Sie im Projektbeispielverzeichnis, das auf GitHub gehostet wird. Siehe https://github.com/peterbrittain/asciimatics/tree/v1.15/samples.
Um sie anzuzeigen, laden Sie einfach diese Dateien herunter und führen Sie sie dann einfach direkt mit Python aus. Alternativ können Sie Aufzeichnungen vieler Beispiele in der Galerie unter https://github.com/peterbrittain/asciimatics/wiki durchsuchen.
Wenn Sie ein Problem haben, lesen Sie bitte die Anleitung zur Fehlerbehebung unter http://asciimatics.readthedocs.io/en/latest/troubleshooting.html. Wenn dies Ihr Problem nicht löst, können Sie unter https://github.com/peterbrittain/asciimatics/issues Fehler melden (oder Verbesserungswünsche einreichen).
Wenn Sie alternativ nur ein paar Fragen haben, können Sie auch gerne unter https://gitter.im/asciimatics/Lobby vorbeischauen.
Wenn Sie an diesem Projekt teilnehmen möchten (und Ihren Namen im Abspann sehen möchten!), lesen Sie die Anleitung unter http://asciimatics.readthedocs.org/en/latest/contributing.html