我似乎无法让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)上测试了它,它有一个黑色的bg和urxvt v9.20,它有一个白色的。我在Debian jessie上,使用bash和Python 2.7。
我运行了一个旧的C脚本,我使用ncurses并且它很好地显示颜色,所以我假设我做错了或者python库有问题。我下载了一个名为colortest-python的软件包,它也可以显示颜色,虽然它不使用curses(仅测试终端是否能够显示颜色)。
答案 0 :(得分:1)
您需要在开头添加以下行以初始化颜色
curses.start_color()
curses.use_default_colors()
然后您需要使用
初始化颜色对curses.init_pair(1, curses.COLOR_RED, curses.COLOR_WHITE)
这会将第一对初始化为红色前景和白色背景。 之后,使用你传递的int值作为函数中的第一个arg而不是curses.color_pair()中的curses.COLORS,颜色将正确显示。