2016-02-07 8 views
2

Python имеет модуль curses. Есть ли простой способ использовать этот модуль для отображения обратного видеотекста? Я не хочу делать полномасштабное приложение curses, просто хочу, чтобы текст отображал инверсию (или цвет).Отображать обратный текст видео с помощью python на терминале

ответ

1

Если вы используете функцию 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», она утверждает, что есть примеры ее использования, но, читая, я не нашел ничего для отчета.

Дальнейшее чтение:

Демонстрационный с обратным-видео:

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 не использовать его, просто используя низкоуровневые возможности и выходные функции.

+0

Да, я обнаружил, что у python нет интерфейса для 'terminfo'. Вы знаете пример, который показывает 'initscr' с' filter'? – vy32

+0

Не изначально в python - в [ncurses-examples] (http://invisible-island.net/ncurses/ncurses-examples.html) есть пример 'filter.c' в C. Но функции, перечисленные для terminfo, - это задокументированный как часть связывания C на языке python. –

+0

Вы не знаете пример python? – vy32

 Смежные вопросы

  • Нет связанных вопросов^_^