如何使用curses 和Python 设置窗口背景颜色?

Way*_*ner 4 python curses colors

我的目标:使窗口背景具有特定的颜色。

我当前的代码:

import curses


def do_it(win):  # Shia LeBeouf!
    win.bkgd(' ', curses.COLOR_BLUE)
    win.addstr(1,1, "This is not blue")
    win.getch()

if __name__ == '__main__':
    curses.wrapper(do_it)
Run Code Online (Sandbox Code Playgroud)

我的期望是我的窗口将是蓝色的,并出现“这不是蓝色”。相反,我得到这个窗口:

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$This$is$not$blue$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
Run Code Online (Sandbox Code Playgroud)

它甚至不是很蓝。

我也尝试过:

  • win.bkgd(curses.COLOR_BLUE)- 似乎删除了所有空格(?)
  • win.bkgdset(' ', curses.COLOR_BLUE)- 似乎做同样的事情

这些以及更多,都无济于事。

那么问题来了:如何在curses中设置窗口的背景颜色?

Way*_*ner 10

显然你必须curses.init_pair在使用它们之前指定你的颜色。然后你可以使用它们curses.color_pair

import curses


def do_it(win):  # Shia LeBeouf!
    curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_BLUE)
    win.bkgd(' ', curses.color_pair(1) | curses.A_BOLD)
    win.addstr(1,1, "This is not blue")
    win.getch()
    win.bkgd(' ', curses.color_pair(1) | curses.A_BOLD | curses.A_REVERSE)
    win.addstr(1,1, "This is now blue")
    win.getch()

if __name__ == '__main__':
    curses.wrapper(do_it)
Run Code Online (Sandbox Code Playgroud)