我在RHE6 linux机器的gnome-terminal中运行下面的代码时发现了一个奇怪的问题。
代码段:
import curses
def main(stdscr):
if curses.has_colors():
curses.start_color()
curses.use_default_colors()
for i in range(0, curses.COLORS):
#curses.init_pair(i+1, 253, i) # opt2
curses.init_pair(i+1, i, 253) # opt1
try:
#stdscr.bkgd(' ', curses.color_pair(8) | curses.A_REVERSE) # opt2
stdscr.bkgd(' ', curses.color_pair(8)) # opt1
for i in range(0, curses.COLORS):
stdscr.addstr(str(i), curses.color_pair(i))
except:
print('Exception caught')
stdscr.refresh()
stdscr.getch()
curses.wrapper(main)
如果我在Xterm中运行此代码(实际上),它按预期工作,并给我一个灰色背景。但是如果我在gnome终端中运行它,它会在没有写入字符的所有地方提供默认的终端背景。只要打印了字符,它就会应用正确的背景颜色。
如果我在bkgd('.', attr)
命令中使用任何其他字符而不是空格(例如bkgd
),则背景应用正确
如果我要评论#opt1
行并取消注释#opt2
行,那么它将在xterm和gnome-terminal中正确应用背景。 (我无法使用此方法,因为在实际程序中,我想启用对REVERSE打印的支持。)
我正在使用linux中的python 3.4进行测试(xterm和gnome-terminal都是这样)
它在我的OS X终端中的行为与python 3.5一样 - 但我认为这与python版本无关。我在linux机器上使用python 2.6进行的测试表现出与3.4相同的行为。
我在gnome-terminal中有一个自定义主题。
如果有人对此问题有任何线索,那将非常有帮助!提前谢谢大家!