2017-03-05 1 views
0

curses에 파이썬의 래퍼 라이브러리를 사용하여 텍스트 게임을 개발하고 있습니다. 사용자가 입력 한 텍스트를 게임의 텍스트 출력과 다른 색으로하고 싶습니다. 출력 텍스트에 대해 색상 쌍을 정의하는 데 아무런 문제가 없었지만 사용자가 활발하게 입력하는 동안 다른 색상을 표시하도록 입력 텍스트를 변경하는 방법을 알 수 없습니다.python curses를 사용하여 입력 텍스트의 색상을 변경하십시오.

현재 모든 입력은 getstr() 방법을 사용합니다.

python/curses에서 가능합니까?

감사합니다, 이안

+0

'getch'를 사용하여 입력을 받아 원하는 방식으로 표시하면됩니다. 'stdin'에서 입력을 받아'stdout'으로 출력하는 기본'input' /'raw_input' 메소드와는 다릅니다. – hashcode55

답변

0

당신이 echo이 켜져와 회전이 처음 오프 에코 경우 예를 들어, 저주를 래퍼를 사용하는 경우 파이썬, 래퍼를 저주 초기화 할 수 있지만,

# Initialize curses 
    stdscr = curses.initscr() 

    # Turn off echoing of keys, and enter cbreak mode, 
    # where no buffering is performed on keyboard input 
    curses.noecho() 
    curses.cbreak() 

curses가 울리지 않는다면 프로그램은 약간의 반향을 일으킬 것입니다. 당신이 getstr을 사용하고 있기 때문에 그러나, 그 getstr에 대한 (ncurses를) 매뉴얼 페이지는

문자 입력이있는 경우에만 echo가 현재 에코 있다고 말했습니다 한 이후, 에코 설정 한 것을 의미한다. 이 경우 백 스페이스는 이전 문자 (일반적으로 왼쪽 동작)를 삭제 한 것으로 표시됩니다. 이 경우

, 당신은 사용 wattrset을 (창문이 어떻게 구성되어 있는지에 따라) 수 :

을 ATTR에 속성으로 설정 "배경"을 설정합니다. 이 세트는 초기에는 0 (속성 없음)입니다.

"배경"은 창에 추가 된 텍스트와 관련된 특성과 병합되는 창 특성을 나타냅니다. getstr에는 추가하는 텍스트에 특성이 없기 때문에 창 특성을 설정하면 문제가 "수정"됩니다. 그러나 getstr이 완료되면 원래의 속성을 저장하여 복원하려는 것이 좋습니다.

ncurses curs_attr 매뉴얼 페이지에서 이에 대해 설명합니다. getstr 함수는 내부적으로 waddch을 사용하지만 (printw, addstr처럼), 매뉴얼 페이지에는 언급되지 않았습니다.

관련 문제