无法在Windows上的curses中更改颜色
我在Windows上使用curses库,下载地址是:http://www.lfd.uci.edu/~gohlke/pythonlibs/#curses,我用的是32位的Python 3.4版本。
到目前为止,这个库运行得很好,除了颜色方面的问题。它显示可以改变颜色,但当我实际尝试改变颜色时,什么也没有发生。这是Windows上curses的限制,还是我代码的问题呢?
import curses
def main(stdscr):
curses.start_color()
stdscr.addstr("Can Change Color? %s\n" % str(curses.can_change_color()))
for i in range(0, curses.COLORS):
curses.init_color(i, 1000, 0, 0)
curses.init_pair(i + 1, i, 0)
try:
for i in range(0, 255):
stdscr.addstr(str(i), curses.color_pair(i))
except curses.ERR:
pass
stdscr.getch()
curses.wrapper(main)
在这里,它显示可以改变颜色,但当我尝试把所有颜色都设置成红色(作为测试)时,它们依然保持默认颜色。
1 个回答
4
我知道你问这个问题已经有一段时间了,但因为这是在谷歌搜索“python curses 颜色问题”时最先出现的结果之一,所以我想还是回答一下。
这个链接中的回答包含了你所需要的确切解决方案。你不能直接调用 curses.color_pair(i)
,而是需要先定义这些颜色对:
stdscr = curses.initscr()
curses.start_color()
curses.use_default_colors()
curses.init_pair(1, curses.COLOR_RED, curses.COLOR_WHITE)
stdscr.addstr( "Pretty text", curses.color_pair(1) )
stdscr.refresh()
上面的代码会把“Pretty text”这个词显示为红色,背景为白色(但要确保你的控制台支持颜色,记得先调用 curses.has_colors()
)。