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) แม้ว่า ควรใช้ได้กับแพลตฟอร์มอื่น ๆ ที่ให้การใช้งานคำสาปที่ใช้งานได้
ควรเป็นแบบไม่เชื่อเรื่องการใช้งานและได้รับการทดสอบบน CPython และ PyPy2 เรียบร้อยแล้ว
(โปรดแจ้งให้เราทราบหากคุณยืนยันบนแพลตฟอร์มอื่นสำเร็จแล้ว เพื่อที่ฉันจะได้อัปเดตรายการนี้ได้)
Asciimatics รองรับ Python เวอร์ชัน 3 สำหรับรายการเวอร์ชันทดสอบที่แม่นยำ โปรดดูที่ pypi เวอร์ชันล่าสุดของ asciimatics ที่รองรับ Python 2 คือ v1.14
ในการติดตั้ง asciimatics เพียงติดตั้งด้วย pip ดังนี้:
$ pip install asciimatics
สิ่งนี้ควรติดตั้งการอ้างอิงทั้งหมดของคุณสำหรับคุณ หากคุณไม่ได้ใช้ pip หรือไม่สามารถติดตั้งได้ คุณสามารถติดตั้งการขึ้นต่อกันได้โดยตรงโดยใช้แพ็คเกจที่แสดงอยู่ใน Requirement.txt นอกจากนี้ ผู้ใช้ Windows (ที่ไม่ได้ใช้ pip) จะต้องติดตั้ง pywin32
หากต้องการใช้ API ระดับต่ำ เพียงสร้างหน้าจอแล้วใช้พิมพ์ข้อความสีที่ตำแหน่งใดก็ได้ หรือรับอินพุตเมาส์/คีย์บอร์ด ตัวอย่างเช่น นี่คือรูปแบบหนึ่งของ "สวัสดีชาวโลก" แบบคลาสสิก:
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