Кажется, я не могу заставить модуль Python curses отображать цвета, тогда как библиотека ncurses C работает нормально. Вот простой скрипт, который должен работать:
import curses
def main(stdscr):
if not curses.has_colors(): raise
stdscr.addstr("Hello world\n", curses.color_pair(curses.COLOR_RED))
stdscr.addstr("Press any key to exit.\n")
stdscr.refresh()
while stdscr.getch() == -1: pass
if __name__ == '__main__':
curses.wrapper(main)
Я вижу только «Нажмите любую клавишу, чтобы выйти». Я знаю, что "Hello world" пишется из-за новой строки, но я не вижу текста. Я пробовал разные пары цветов, но работает только 0, то есть белый.
Не используя обертку, т.е.
stdscr = curses.initscr()
curses.start_color()
main(stdscr)
curses.endwin()
Не помогло.
Я протестировал его на XTerm (312), у которого черный фон, и на urxvt v9.20, у которого белый. Я на Debian jessie, использую bash и Python 2.7.
Я запустил старый сценарий C, который у меня был, который использует ncurses и хорошо отображает цвета, поэтому я предполагаю, что либо я делаю что-то неправильно, либо что-то не так с библиотекой python. Я загрузил пакет под названием colortest-python, и он также смог отображать цвет, хотя для этого не использовал проклятия (только для проверки того, способен ли терминал отображать цвета).