Используя Python цвета проклятий, я не понимаю, что не так с моим кодом - PullRequest
0 голосов
/ 26 февраля 2020

Я хочу использовать библиотеку Python curses, чтобы создать черновик для нового приложения. У меня есть основы curses, но я не знаю, почему в приведенном ниже примере текст пишется серым, а не красным:

import curses
from curses import wrapper
from time import sleep

def main(stdscr):
    curses.noecho()
    curses.cbreak()
    curses.start_color()
    stdscr.keypad(True)
    stdscr.addstr(10,10,"This text should be red",curses.COLOR_RED)
    stdscr.refresh()
    sleep(2)
    curses.nocbreak()
    stdscr.keypad(False)
    curses.echo()
    curses.endwin()

wrapper(main)

Я знаю, что не стоит переписывать шаги инициализации после использования «обертки», но это не проблема, я думаю, текст все еще серый без него. Я запускаю это приложение в окне xterm, «has_colors» говорит мне, что термин «способен работать с цветом» (что я знаю, потому что «ls» - это colorfull).

Если кто-нибудь может объяснить мне, что я делаю неправильно, я был бы рад: -P

Спасибо за любую помощь.

1 Ответ

1 голос
/ 26 февраля 2020

Атрибут должен использовать пару цветов , а не номер цвета . Вы должны создать пару цветов, используя init_pair, используйте ее через color_pair

Например,

import curses
from curses import wrapper
from time import sleep

def main(stdscr):
    curses.noecho()
    curses.cbreak()
    curses.start_color()
    stdscr.keypad(True)
    curses.init_pair(1, curses.COLOR_RED, curses.COLOR_BLUE)
    stdscr.addstr(10,10,"This text should be red",curses.color_pair(1))
    stdscr.refresh()
    sleep(2)
    curses.nocbreak()
    stdscr.keypad(False)
    curses.echo()
    curses.endwin()

wrapper(main)
...