ncurses and white-on-black

8

当在彩色模式下使用curses时,我似乎无法实现白字黑底的效果。如果我不调用start_color,那么就可以得到白字黑底的效果。但是一旦我调用了start_color,输出的颜色就变成了灰色字体黑底。

如果您运行此脚本:

import sys

for i in xrange(30, 38):
    print '\x1b[0;' + str(i) + 'm' + str(i) + ': Shiny colors \x1b[1m(bright)'
print '\x1b[0m...and this is normal.'

如果你在使用Gnome终端,你可能会看到很多漂亮的颜色。我想要的,但得不到的是最后一行:"...and this is normal." 请求颜色对0或请求COLOR_WHITE、COLOR_BLACK会从脚本中获取非明亮的#37。

供参考,这是我在Gnome终端中看到的:

http://rpi.edu/~wellir/random/colors.png

我正在使用Python(使用curses库)进行编程,所以我的代码类似于:

import curses

screen = curses.initscr()
curses.start_color()
curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_BLACK)
screen.clear()
screen.attrset(0)
screen.addstr('Hello')
screen.attrset(curses.A_BOLD)
screen.addstr('Hello')
screen.attrset(curses.color_pair(1))
screen.addstr('Hello')
screen.refresh()
curses.napms(5000)
curses.endwin()

...which gets me 37, 37-bright, and 37.

3个回答

5

curses.use_default_colors()


1

我也在gnome终端中遇到了同样的问题。

我通过以下方式解决了它:

右键单击屏幕 > 档案 > 档案首选项 > 颜色 > 调色板

我认为这是8种颜色的每个映射。

由于某种原因,选择的内置方案Default将第一种颜色映射为灰色而不是黑色!

将方案更改为XTerm,或将第一种颜色更改为黑色可以解决我的问题。

我没有使用curses.use_default_colors


请明确,这是在调色板中,而不一定是您的终端背景。这对于任何curses程序都是绝对必要的,不仅仅是Python。特别是c3270在灰色背景下很难阅读,并且在Windows上的表现与此不同。#000000 - mckenzm

1

你的 Gnome 终端可能有自己的颜色方案,可以将默认的白色更改为亮白色,但在 curses 模式下除外。请检查 gnome-terminal 是否更改了颜色,因为这会使测试颜色变得困难。


这似乎会使测试变得更容易。我想输出“正常”的文本:如果Gnome用颜色区分它,那么测试就更容易了。 - Thanatos
几乎可以肯定使用use_default_colors()无法解决上述问题,更有可能是终端的颜色配置文件将白色/黑色/等映射到非正常值,如此答案所述!谢谢! - Doug
我正在使用不同颜色方案的gnome终端,并且use_default_colors()确实解决了我的问题。 - mattgately

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接