window.inch(0,0) 将通过读取包含该位置属性的窗口位置 (0,0) 处的字符返回一个值。如果您使用stdscr 作为窗口,您应该获得整个屏幕的当前颜色。引用官方文档:
"返回窗口中给定位置的字符。低8位是字符本身,高位是属性。"
colors = stdscr.inch(0,0) & curses.A_COLOR
应该提取前景和背景的当前颜色。分离前景色和背景色是我目前正在尝试弄清楚的事情,但还没有太多运气。在 Windows 机器上,curses 实现是 PDCurses,PDCurses 的源代码似乎说这两种颜色组合在一个 4 字节整数字段的最左边字节中,但我还没有确认。
还有window.getbkgd(),文档中说:
"返回给定窗口的当前背景字符/属性对。"
这有点模糊。我正在努力确定该函数实际返回的内容,尽管它听起来很像 inch 函数返回的值。
HTH
彼得
[编辑] 这个 curses 调用序列可靠地为您提供前景色和背景色编号。在 *ix 系统上,默认值为 fg=-1 和 bg=-1(-1 表示 init_color() 函数的“默认”),但在 windows(python 3.8+,windows-curses 2.2.0)上,默认值为 fg =7 (COLOR_WHITE) 和 bg=0 (COLOR_BLACK)。
attr = stdscr.getbkgd()
stdscr.addstr("scrbkgd={:08X}={}\n".format(attr, attr))
pair = curses.pair_number(attr)
if platform.system() == "Windows":
pair = pair >> 16
fg, bg = curses.pair_content (pair)
stdscr.addstr("color(scrbkgd) fg={:08X}={},bg={:08X}={}\n".format(fg, fg, bg, bg))
stdscr.getch()