Python诅咒不显示颜色,而C ncurses工作正常

时间:2015-01-09 07:20:34

标签: python ncurses curses python-curses

我似乎无法让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(仅测试终端是否能够显示颜色)。

1 个答案:

答案 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,颜色将正确显示。