2015-01-09 29 views
0

我似乎無法讓Python curses模塊顯示顏色,而ncurses C庫工作正常。這是一個簡單的腳本,應該可以工作:Python詛咒不顯示顏色,而C ncurses工作正常

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

你需要在開始添加以下行來初始化顏色

curses.start_color() 
curses.use_default_colors() 

然後,您需要Ø與

curses.init_pair(1, curses.COLOR_RED, curses.COLOR_WHITE) 

這初始化顏色對將初始化第一對紅色前景和白色背景爲例。 之後,您使用您傳遞的int值作爲函數中的第一個參數,而不是curses.color_pair()中的curses.COLORS,並且顏色將正確顯示。

+0

沒有幫助。 [完整腳本](http://pastebin.com/70PJJN81)。其他顏色對似乎不工作 – Alex

+0

什麼輸出curses.has_colors()? –

+0

哦,現在我明白了,你不直接使用顏色,你需要用curses.init_pair(1,curses.COLOR_RED,curses.COLOR_WHITE)聲明一個對,然後使用你在第一個參數中使用的int值curses.color_pair(1)。這種方式應該工作 –