2014-04-15 10 views
2

자주 업데이트되는 일부 값을 표시하기 위해 ncurses와 color를 사용하지만 좀처럼 관심을 두지 않는 파이썬에서 약간의 모니터링 스크립트를 작성했습니다. 중요한 변화를 알려주기 위해 필자는 이러한 가치가 흥미로운 영역에 들어갈 때 텍스트가 검은 색에서 흰색으로 바뀌도록 설정했습니다. 이것은 내 Linux (openSuSE 12.2) 상자에서 제대로 작동하지만 Solaris 10에서 curses.can_change_color()는 내가 시도한 것에 관계없이 항상 False를 반환합니다. 두 플랫폼 모두 Python (2.7.2)과 ncurses (5.7)의 동일한 버전을 사용하고 있습니다. 나는 여러 터미널 에뮬레이터를 사용할 수있다 (gnome-terminal, xterm, rxvt). 모두 내 셸 프롬프트를 빨간색으로 표시 할 수 있으므로 색상을 지원한다는 것을 알고 있습니다. 저는 TERM을 xtermc, xterm-color, rxvt, rxvt-16color를 포함한 많은 xterm 변종들로 설정하려고했습니다. 이러한 터미널 이름 중 일부는 기본 위치에 있지 않으므로 terminfo 기능 데이터베이스를 가리 키도록 TERMINFO를 설정해야하는 경우가 있습니다. 따라서 내가 원하는 항목을 찾을 수 있습니다.Curses can_change_color()는 항상 False를 반환합니다.

Python curses.can_change_color() 함수는 동일한 이름의 ncurses 라이브러리 루틴을 둘러싼 단순한 래퍼입니다. 왜 항상 False를 반환합니까?

답변

2

can_change_color()는 init_color()를 통해 색상을 재 매핑 할 수 있는지 여부를 실제로보고합니다. 이는 흔하지 않은 기능으로, init_pair()를 통해 색상을 전혀 사용할 수 있는지 여부가 아닙니다. 기본 색상 기능을 확인하기 위해 원하는 것은 has_colors()입니다.

init_color(), 그것이 작동하는 터미널에서, 사용 된 파란색의 정확한 그늘을 조정할 수 있습니다 - 또는 터미널의 "파란색"아이디어가 완전히 다른 것으로 표시되도록 할 수 있습니다.

+0

내 ncurses (openSUSE 42.1)는'TERM = xterm-256color' 인 경우 can_change_color()에 대해 'true'를 반환합니다. 'xterm'은 실제로 색상을 변경할 수 있습니다. –

+0

@MartinVidner : 감사합니다. 우분투에서도 저에게 도움이되었습니다. –