sách gpt4 ăn đã đi

python - Curses.init_color() 不会生效

In lại 作者:太空狗 更新时间:2023-10-30 01:32:11 29 4
mua khóa gpt4 giày nike

我正在使用 Python curses 并尝试使用 curses.init_color() 初始化新颜色。即使在初始化新的 RGB 值并将其分配给一对后,更改也不会生效。

我的终端支持颜色变化,因为 curses.can_change_color() 返回 True。我还检查了使用 curses.color_content() 更改的颜色索引 - 它返回了我在 init_color() 中指定的 RGB 值。我还在一开始就调用了 curses.start_color() 一次。

我错过了什么吗?我需要做什么才能使 init_color() 发生变化?代码如下:

    curses.start_color()
curses.init_color(17, 200,200,200)

curses.init_pair(1, curses.COLOR_MAGENTA, curses.COLOR_BLACK)
curses.init_pair(2, curses.COLOR_RED, curses.COLOR_BLACK)
curses.init_pair(3, curses.COLOR_CYAN, curses.COLOR_BLACK)
curses.init_pair(4, 17, curses.COLOR_BLACK)

print curses.can_change_color() #returns True
print curses.color_content(17) #(200,200,200),
stdscr.addstr("test",curses.color_pair(4)) #yet this text is blue

Tôi đã bỏ lỡ điều gì à?

câu trả lời hay nhất

你的颜色太深了。尝试另一种更明亮的颜色,例如(800,800,0) 看黄色。

作为 documentation states ,每个 RGB 分量可以在 0 到 1000 之间变化,所以如果我们将 (200, 200, 200) 颜色映射到标准的 8 位方案,我们会得到类似 http://colorpeek.com/#rgb(51,51,51) 的东西。

您可以运行此演示并查看 init_colorinit_pair 和任何其他函数是否按预期工作。首先,它打印 8 种颜色,同时仅在值 0 和 200 之间改变每个组件。然后当组件在范围内变化时打印更完整的调色板 (0、200、400、600、800、1000)

# -*- mã hóa: utf-8 -*-
import curses


def demo(screen):
# save the colors and restore it later
save_colors = [curses.color_content(i) for i in range(curses.COLORS)]
curses.curs_set(0)
curses.start_color()

# use 250 to not interfere with tests later
curses.init_color(250, 1000, 0, 0)
curses.init_pair(250, 250, curses.COLOR_BLACK)
curses.init_color(251, 0, 1000, 0)
curses.init_pair(251, 251, curses.COLOR_BLACK)

screen.addstr(0, 20, 'Test colors for r,g,b = {0, 200}\n',
curses.color_pair(250) | curses.A_BOLD | curses.A_UNDERLINE)
i = 0
for r in (0, 200):
for g in (0, 200):
for b in (0, 200):
i += 1
curses.init_color(i, r, g, b)
curses.init_pair(i, i, curses.COLOR_BLACK)
screen.addstr('{},{},{} '.format(r, g, b), curses.color_pair(i))

screen.addstr(3, 20, 'Test colors for r,g,b = {0..1000}\n',
curses.color_pair(251) | curses.A_BOLD | curses.A_UNDERLINE)
for r in range(0, 1001, 200):
for g in range(0, 1001, 200):
for b in range(0, 1001, 200):
i += 1
curses.init_color(i, r, g, b)
curses.init_pair(i, i, curses.COLOR_BLACK)
# screen.addstr('{},{},{} '.format(r, g, b), curses.color_pair(i))
screen.addstr('test ', curses.color_pair(i))

screen.getch()
# restore colors
for i in range(curses.COLORS):
curses.init_color(i, *save_colors[i])


nếu __name__ == '__main__':
curses.wrapper(demo)

此外,当您使用 init_color 更改颜色时,请确保在退出程序之前恢复它们,因为即使您退出 curses 程序,当前 session 中的终端颜色也不会恢复(color not ended in curses ).

nhập mô tả hình ảnh ở đây

关于python - Curses.init_color() 不会生效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44621718/

29 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress