터미널 애플리케이션에 생기를 불어넣는 Python 도구들: survey, glow, rich, textwrap
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
앱 개발, 개발 툴
대상자
CLI 애플리케이션 개발자
- 중급~고급 Python 개발자
- 터미널 애플리케이션의 UI/UX 개선에 관심 있는 개발자
핵심 요약
pyfiglet
를 사용해 ASCII 아트 배너 생성 가능 (예:pyfiglet.figlet_format("Your App Name")
)survey
라이브러리로 CLI 상호작용 요소 (정렬 가능한 메뉴, 비밀번호 마스킹) 추가 가능glow
로 Markdown 문서를 터미널 내부에서 렌더링 (예:os.system('glow "file.md"')
)textwrap
모듈로 터미널 내 텍스트 줄 끊기 (예:textwrap.fill(text, width=80)
)rich
라이브러리로 고급 터미널 스타일링 및 레이아웃 구현 가능
섹션별 세부 요약
1. ASCII 아트 생성: `pyfiglet`
pyfiglet
라이브러리로 텍스트를 ASCII 아트로 변환 가능figlet_format()
함수로 폰트 스타일 조정 (예:font="slant"
)- asciiart.eu 활용해 이미지 → ASCII 아트 변환 가능
- 예시 코드:
```python
import pyfiglet
ascii_banner = pyfiglet.figlet_format("Your App Name")
print(ascii_banner)
```
2. CLI 상호작용 개선: `survey`
survey
라이브러리로 정렬 가능한 메뉴, 필터링 기능, 비밀번호 마스킹 지원- 공식 문서에서 다양한 기능 확인 가능
- 예시:
```python
from survey import Survey
survey = Survey()
survey.add_question("What is your favorite color?", options=["Red", "Blue", "Green"])
survey.run()
```
3. Markdown 렌더링: `glow`
- 터미널 내부에서 Markdown 문서를 실시간으로 렌더링
- 설치 방법:
```bash
pacman -S glow # Arch 기반 시스템
```
- Python 애플리케이션에 통합:
```python
import os
os.system(f'glow "{file_with_markdown_to_display}"')
```
4. 텍스트 줄 끊기: `textwrap`
textwrap.fill()
함수로 터미널 내 텍스트 줄 끊기 및 가독성 향상- 표준 라이브러리로 별도 설치 필요 없음
- 예시:
```python
import textwrap
wrapped_text = textwrap.fill("This is a long string...", width=80)
print(wrapped_text)
```
5. 고급 터미널 스타일링: `rich`
- 터미널 내 텍스트, 테이블, 프로그레스 바 등 다양한 UI 요소 지원
- 공식 문서의 cheat sheet 참고하여 기능 활용
- 예시:
```python
from rich import print
print("[bold red]Error:[/bold red] Something went wrong!")
```
6. 실전 예시: `cj` CLI 애플리케이션
- Gemini AI 챗봇과 상호작용하는 CLI 애플리케이션 개발
glow
,survey
,os.system('clear')
활용- 소스 코드: GitHub 저장소
결론
터미널 애플리케이션의 UI/UX를 향상시키기 위해 pyfiglet
, survey
, glow
, textwrap
, rich
등 다양한 도구를 조합 활용할 수 있음. 특히 rich
는 고급 레이아웃 구현에 강력하며, 실전 예시인 cj
CLI는 실제 구현 방법을 확인할 수 있는 좋은 참고 자료. 각 라이브러리의 공식 문서를 참고해 필요 기능만 선택적으로 활용하는 것이 효과적.