Python3 Curses - 无法在gnome-terminal

时间:2016-12-17 07:18:28

标签: python python-3.x curses xterm gnome-terminal

我在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中有一个自定义主题。

如果有人对此问题有任何线索,那将非常有帮助!提前谢谢大家!

0 个答案:

没有答案