Python имеет модуль curses
. Есть ли простой способ использовать этот модуль для отображения обратного видеотекста? Я не хочу делать полномасштабное приложение curses, просто хочу, чтобы текст отображал инверсию (или цвет).Отображать обратный текст видео с помощью python на терминале
ответ
Если вы используете функцию filter
(до initscr
), приложение curses будет обновлять текущую строку экрана (и не будет очищать весь экран). Это было бы минимальным использованием библиотеки .
Если вы хотите более низкого уровня (без оптимизации, сделать это самостоятельно), вы должны использовать Terminfo уровень библиотеки, то есть, эти функции:
initscr
сfilter
(с Python проклятий, видимо, не имеет интерфейса для newterm)tigetstr
читать возможности дляsgr
,sgr0
,smso
,rmso
,rev
tparm
к параметрам формата дляsgr
если вы используете чтоputp
писать строки чтения/отформатирован с помощьюtigetstr
иtparm
На странице Python curses.tigetstr Examples имеет некоторые (в основном неполные) примеры использования tigetstr
, и напоминает мне что вы можете использовать setupterm
в качестве альтернативы newterm
. Если вы заходите на эту страницу, ища «curses.filter», она утверждает, что есть примеры ее использования, но, читая, я не нашел ничего для отчета.
Дальнейшее чтение:
- Complete as-you-type on command line with python (показывает
filter
в использовании)
Демонстрационный с обратным-видео:
import curses
curses.filter()
stdscr = curses.initscr()
stdscr.addstr("normal-")
stdscr.addstr("Hello world!", curses.A_REVERSE)
stdscr.addstr("-normal")
stdscr.refresh()
curses.endwin()
print
или
import curses
curses.setupterm()
curses.putp("normal-")
curses.putp(curses.tigetstr("rev"))
curses.putp("Hello world!")
curses.putp(curses.tigetstr("sgr0"))
curses.putp("-normal")
иллюстрирует точку: текст, написанный с помощью curses.putp
, обходит оптимизацию библиотеки curses. Вы должны использовать initscr
или newterm
, чтобы использовать экранную оптимизацию curses, но setupterm
не использовать его, просто используя низкоуровневые возможности и выходные функции.
Да, я обнаружил, что у python нет интерфейса для 'terminfo'. Вы знаете пример, который показывает 'initscr' с' filter'? – vy32
Не изначально в python - в [ncurses-examples] (http://invisible-island.net/ncurses/ncurses-examples.html) есть пример 'filter.c' в C. Но функции, перечисленные для terminfo, - это задокументированный как часть связывания C на языке python. –
Вы не знаете пример python? – vy32