curses — 캐릭터 셀 디스플레이용 터미널 처리

curses — 캐릭터 셀 디스플레이용 터미널 처리

curses 모듈은 이식 가능한 고급 터미널 처리의 사실상 표준인 curses 라이브러리에 대한 인터페이스를 제공합니다. curses는 유닉스 환경에서 가장 널리 사용되지만 Windows, DOS 및 기타 시스템용 버전도 있습니다. 이 확장 모듈은 Linux와 BSD 계열 유닉스에서 호스팅되는 오픈소스 curses 라이브러리인 ncurses의 API와 일치하도록 설계되었습니다.

출처: Python documentation

본문

사용 가능한 환경: Android, iOS, WASI에서는 사용할 수 없습니다. 이 모듈은 모바일 플랫폼이나 WebAssembly 플랫폼에서 지원되지 않습니다. 또한 유닉스에서만 사용 가능합니다. 선택적(optional) 모듈로, CPython 배포본에 없다면 배포자 문서를 확인하세요.

문서에서 "문자(character)"를 언급할 때는 정수, 한 글자 유니코드 문자열, 또는 한 바이트 바이트 문자열로 지정할 수 있습니다. 정수는 단일 인코딩 바이트의 코드이며, 선택적으로 속성과 색상 쌍이 결합된 것으로 window.inch()가 반환하는 값입니다. "문자열(character string)"을 언급할 때는 유니코드 문자열이나 바이트 문자열로 지정할 수 있습니다.

curses를 여러 스레드에서 사용할 수 있는지는 기반 라이브러리와 빌드 방식에 따라 다릅니다. ncurses의 기본 빌드를 포함한 많은 구현에서 화면 상태는 공유되며 스레드 안전하지 않습니다. getch()refresh() 같은 차단 및 갱신 메서드는 GIL을 해제하므로 여러 스레드에서 동기화 없이 사용하면 인터프리터가 크래시할 수 있습니다. 호출을 직렬화해야 합니다.

관련 모듈로는 다음과 같은 것들이 있습니다:

  • curses.ascii — 로케일 설정과 무관하게 ASCII 문자를 다루는 유틸리티.
  • curses.panel — curses 윈도우에 깊이(depth)를 추가하는 패널 스택 확장.
  • curses.textpad — Emacs 유사 바인딩을 지원하는 편집 가능한 텍스트 위젯.

함수

curses 모듈은 다음 예외를 정의합니다: exception curses.error — curses 라이브러리 함수가 오류를 반환할 때 발생하는 예외. 함수나 메서드의 x, y 인자가 선택적이면 현재 커서 위치를 기본값으로 하고, attr이 선택적이면 A_NORMAL을 기본값으로 합니다.

주요 함수는 다음과 같습니다:

  • curses.assume_default_colors(fg, bg, /) — 이 기능을 지원하는 터미널에서 색상에 기본값을 사용하도록 허용합니다. 애플리케이션에서 투명도를 지원하는 데 사용합니다. 터미널 기본 전경/배경 색상을 색상 번호 -1에 할당합니다. 그래서 init_pair(x, COLOR_RED, -1)은 기본 배경 위의 빨간색으로 쌍 x를 초기화하고, init_pair(x, -1, COLOR_BLUE)는 파란색 위의 기본 전경으로 초기화합니다. 또한 색상-쌍 0의 정의를 (fg, bg)로 변경합니다.
  • curses.initscr() — 화면을 초기화하고 전체 화면을 덮은 윈도우 객체를 반환합니다.
  • curses.cbreak() / curses.raw() — 입력 모드를 변경합니다.
  • curses.endwin() — curses 모드를 종료하고 터미널을 복원합니다.
  • curses.newwin(), curses.newwin(...) — 새 윈도우를 만듭니다.
  • curses.color_pair(n), curses.init_pair(pair_number, fg, bg) — 색상 쌍을 다룹니다.

curses는 캐릭터 셀 디스플레이에서 텍스트 기반 사용자 인터페이스를 만드는 데 사용됩니다. 윈도우, 패널, 색상, 키보드 입력 처리, 화면 갱신 등의 기능을 제공하여 터미널 응용 프로그램에서 풀스크린 대화형 인터페이스를 구현할 수 있게 합니다. Python으로 curses를 사용하는 튜토리얼로는 Andrew Kuchling과 Eric Raymond가 작성한 "Curses Programming with Python"이 있습니다.

더 알아보기 (Learn more)