2015-05-04 2 views
2

Есть ли способ, которым я могу покрасить слово в строку до Я даже addstr это к экрану проклятий? Я попытался сделать это на низком уровне, объединив такие вещи, как "\033[31m" (а затем "\033[0m" в конце) к строке, но проклятия не распознают это и просто выплевывают что-то вроде: this is a ^[[31mlink^[[0m. Если вы не понимаете до сих пор, это может помочь:Как покрасить части строки, прежде чем рисовать строку на экране с помощью проклятий?

# pseudocode 
a = "this is a link" 
replace "link" in a with colorRed("link") 

Спасибо.

+0

Нужно ли использовать 'addstr' или вы можете использовать некоторые API? –

ответ

0

Нет: программы, которые используют проклятия, не отправляют escape-последовательности. Вместо этого они передают строки и атрибуты. Библиотека curses объединяет их и отправляет escape-последовательности.

В интерфейсе C для проклятий, которые можно было бы сделать за характера путем OR'ing атрибут на chtype значений (или упаковки cchar_t с помощью setcchar). В качестве альтернативы, можно установить атрибут в окне и написать строку, используя этот атрибут, с помощью addstr.

Python обеспечивает (согласно его documentation) a различным интерфейсом к addstr. Раздел Attributes and Color показывает этот пример:

stdscr.addstr(0, 0, "Current mode: Typing mode", curses.A_REVERSE) 

добавить обратную строку-видео, а это:

stdscr.addstr("Pretty text", curses.color_pair(1)) 

, чтобы добавить строку, используя цветовую пару # 1. Цветные пары сочетают передний план (текст) и цвета фона.

интерфейс Python для изменения окна атрибутов больше напоминает интерфейс C: он обеспечивает attrset, attron, bkgd методы, как показано в документации для Window Objects.

В качестве общей рекомендации, вы бы не получить хорошие результаты, написав свои собственные управляющие последовательности непосредственно (минуя библиотеку проклятия):

  • проклятий используют свою собственную буферизацию вывода, который не может быть подключен к стандартному (так что вещи могут быть записаны в неожиданном порядке)
  • Если вы написали что-то, что изменило внешний вид экрана, проклятия не знали бы об этом, и результат не был бы полезен.
+0

Я знаю, как цвет текста, используя интерфейс рисования проклятий, я просто не знаю, как (или, если это возможно) установить цвет текста BEFOREHAND. – m0dem

+0

Это сделано с использованием attrset, bkgd и т. Д. –