2014-10-19 55 views
0

我使用Windows上從這裏詛咒:http://www.lfd.uci.edu/~gohlke/pythonlibs/#curses使用32位打造的Python 3.4無法改變顏色的詛咒在Windows

它一直工作得很好,到目前爲止,除了顏色。它報告它可以改變顏色,但是當試圖改變顏色時,什麼都不會發生。這是Windows的詛咒限制還是我的代碼問題?

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) 

在這方面,它報告說,它可以改變顏色,而是試圖設置每一種顏色爲紅色(作爲測試)時,他們都留默認值。

+0

您是否試圖替換'pass'以便它打印一些異常信息?可能'curses'在嘗試使用顏色寫入時出錯,並且您正在隱藏它(在這種情況下,它可能是底層C庫或終端本身的限制) – Bakuriu 2014-10-19 16:26:45

+0

@Bakuriu沒有例外,我認爲這是一個限制的PDCurses。不知道爲什麼它返回它可以改變顏色ho wever。 理想情況下,我想更改鏈接的curses使用到SDL版本的PDCurses版本,但我不知道如何甚至使用PDCurses。 – Hogofwar 2014-10-19 19:25:21

+0

用於Win32控制檯的PDCurses確實可以更改顏色,但該方法在更新版本的Windows上明顯打破。至於SDL版本,如果您碰巧使用Win32控制檯版本的DLL版本,那麼這是一種直接替換。它只是使用SDL而不是控制檯調用呈現文本。 – 2014-10-20 04:22:01

回答

0

我知道它已經有一段時間了,因爲你問這個問題,但因爲這是谷歌搜索的第一個命中之一,像「蟒蛇詛咒顏色問題」,我想我也可以回答這個問題。

linked answer包含您正在尋找的確切解決方案。你只是不直接調用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() 

上面的代碼將顯示單詞「漂亮的文字」,在紅色和白色背景(但要確保控制檯支持通過首先調用curses.has_colors()來着色