curses — Обработка терминала для дисплеев символьных ячеек
Модуль curses предоставляет интерфейс к библиотеке curses, фактическому стандарту для переносимой обработки расширенного терминала.
Хотя curses наиболее широко используется в среде Unix, версии доступны для Windows, DOS и, возможно, других систем. Этот модуль расширения разработан для соответствия API ncurses, открытой библиотеки curses, размещенной в Linux и BSD-вариантах Unix.
Примечание
Всякий раз, когда в документации упоминается символ, он может быть указан как целое число, строка Юникода длиной в один символ или строка байтов длиной в один байт.
Всякий раз, когда в документации упоминается строка символов, она может быть указана как строка Юникода или строка байтов.
Примечание
С версии 5.4 библиотека ncurses определяет, как интерпретировать данные, не являющиеся ASCII, с помощью функции nl_langinfo. Это означает, что в приложении необходимо вызвать locale.setlocale() и закодировать строки Юникода с помощью одного из доступных кодировок системы. В этом примере используется системная кодировка по умолчанию:
import locale locale.setlocale(locale.LC_ALL, '') code = locale.getpreferredencoding()
Затем используйте code как кодировку для вызовов str.encode().
См. также
-
Modulecurses.ascii -
Утилиты для работы с символами ASCII независимо от настроек вашего локали.
-
Modulecurses.panel -
Расширение стека панелей, добавляющее глубину окнам curses.
-
Modulecurses.textpad -
Редактируемый текстовый виджет для curses, поддерживающий связывания в стиле Emacs.
- Программирование с использованием curses на Python
-
Материал по руководству по использованию curses с Python, авторы Andrew Kuchling и Eric Raymond.
В каталоге Tools/demo/ в дистрибутиве исходного кода Python содержатся примеры программ, использующие bindings curses, предоставляемые этим модулем.
Функции
Модуль curses определяет следующую исключительную ситуацию:
-
exception curses.error -
Исключение, генерируемое, когда функция библиотеки curses возвращает ошибку.
Примечание
Всякий раз, когда аргументы x или y в функции или методе являются необязательными, они по умолчанию принимают значение текущих координат курсора. Когда attr является необязательным, он по умолчанию равен A_NORMAL.
Модуль curses определяет следующие функции:
-
curses.baudrate() -
Возвращает скорость вывода терминала в битах в секунду. В эмуляторах программных терминалов она будет иметь фиксированное высокое значение. Включено по историческим причинам; в прежние времена использовалось для написания циклов вывода с задержками и иногда для изменения интерфейсов в зависимости от скорости линии.
-
curses.beep() -
Издает короткий звуковой сигнал.
-
curses.can_change_color() -
Возвращает
TrueилиFalse, в зависимости от возможности изменения пользователем отображаемых цветом на терминале.
-
curses.cbreak() -
Переход в режим cbreak. В режиме cbreak (иногда называемом «редким» режимом) обычное буферирование строки tty выключается, и символы доступны для чтения по одному. Однако, в отличие от режима raw, специальные символы (прерывание, выход, приостановка и управление потоком) сохраняют свои эффекты на драйвере tty и вызывающей программе. Вызов сначала
raw(), а затемcbreak()оставляет терминал в режиме cbreak.
-
curses.color_content(color_number) -
Возвращает интенсивность красного, зеленого и синего (RGB) компонентов в цвете color_number, который должен быть между
0иCOLORS - 1. Возвращает кортеж из 3 значений, содержащих значения R, G, B для заданного цвета, которые будут находиться между0(нет компонента) и1000(максимальное значение компонента).
-
curses.color_pair(pair_number) -
Возвращает значение атрибута для отображения текста в указанной паре цветов. Поддерживаются только первые 256 пар цветов. Это значение атрибута может быть объединено с
A_STANDOUT,A_REVERSE, и другимиA_*атрибутами.pair_number()является аналогом этой функции.
-
curses.curs_set(visibility) -
Устанавливает состояние курсора. visibility может быть установлен в
0,1, или2, для невидимого, обычного или очень видимого. Если терминал поддерживает запрошенную видимость, возвращает предыдущее состояние курсора; в противном случае генерирует исключение. На многих терминалах «видимый» режим — курсор-подчеркивание, а «очень видимый» режим — курсор-блок.
-
curses.def_prog_mode() -
Сохраняет текущий режим терминала как «программный» режим, режим, когда запущенная программа использует curses. (Его аналогом является «оболочечный» режим, когда программа не использует curses.) Последующие вызовы
reset_prog_mode()восстановят этот режим.
-
curses.def_shell_mode() -
Сохраняет текущий режим терминала как «оболочечный» режим, режим, когда запущенная программа не использует curses. (Его аналогом является «программный» режим, когда программа использует возможности curses.) Последующие вызовы
reset_shell_mode()восстановят этот режим.
-
curses.delay_output(ms) -
Вставляет паузу в ms миллисекунд в выводе.
-
curses.doupdate() -
Обновляет физический экран. Библиотека curses поддерживает две структуры данных: одна представляет текущее состояние физического экрана, а другая — виртуальный экран, представляющий желаемое следующее состояние. Метод
doupdate()обновляет физический экран для соответствия виртуальному.Виртуальный экран может быть обновлен вызовом
noutrefresh()после выполнения операций записи, таких какaddstr(), над окном. Обычный вызовrefresh()простоnoutrefresh()за которым следуетdoupdate(); если вам нужно обновить несколько окон, вы можете ускорить производительность и, возможно, уменьшить мерцание экрана, вызвав вызовыnoutrefresh()для всех окон, а затем один вызовdoupdate().
-
curses.echo() -
Переход в режим ввода с эхом. В режиме ввода с эхом каждый вводимый символ отображается на экране по мере ввода.
-
curses.endwin() -
Деинициализирует библиотеку и возвращает терминал в обычное состояние.
-
curses.erasechar() -
Возвращает текущий символ удаления пользователя в виде объекта типа bytes длиной один байт. Под Unix-подобными операционными системами это свойство управляющего tty программы curses, и оно не устанавливается самой библиотекой curses.
-
curses.filter() -
Функция
filter(), если используется, должна быть вызвана до вызоваinitscr(). Это приведет к тому, что во время этих вызововLINESустановлено в1; возможностиclear,cup,cud,cud1,cuu1,cuu,vpaотключены; и строкаhomeустановлена в значениеcr.
-
curses.flash() -
Мгновенно мигает экраном. То есть, меняет его на режим обратного видео, а затем возвращает обратно в короткий интервал. Некоторые предпочитают такой «видимый звонок» звуковому сигналу, генерируемому функцией
beep().
-
curses.flushinp() -
Очищает все буферы ввода. Это отбрасывает все набранные пользователем данные, которые еще не обработаны программой.
-
curses.getmouse() -
После того, как
getch()возвращаетKEY_MOUSEдля сигнализации о событии мыши, этот метод должен быть вызван для извлечения очереди события мыши, представленного в виде 5-кортежа(id, x, y, z, bstate). id — значение идентификатора, используемое для различения нескольких устройств, а x, y, z — координаты события. (z в настоящее время не используется.) bstate — целое число, биты которого будут установлены для указания типа события и будет являться побитовым ИЛИ одного или нескольких из следующих констант, где n — номер кнопки от 1 до 4:BUTTONn_PRESSED,BUTTONn_RELEASED,BUTTONn_CLICKED,BUTTONn_DOUBLE_CLICKED,BUTTONn_TRIPLE_CLICKED,BUTTON_SHIFT,BUTTON_CTRL,BUTTON_ALT.
-
curses.getsyx() -
Возвращает текущие координаты виртуального курсора экрана в виде кортежа
(y, x). Еслиleaveokв настоящее времяTrue, возвращает(-1, -1).
-
curses.getwin(file) -
Считывает данные, относящиеся к окну, сохраненные в файле после предыдущего вызова
putwin(). Затем функция создаёт и инициализирует новое окно, используя эти данные, и возвращает новый объект окна.
-
curses.has_colors() -
Возвращает
True, если терминал может отображать цвета; в противном случае возвращаетFalse.
-
curses.has_ic() -
Возвращает
True, если терминал имеет возможности вставки и удаления символов. Эта функция включена по историческим причинам, так как все современные эмуляторы программных терминалов обладают такими возможностями.
-
curses.has_il() -
Возвращает
True, если терминал имеет возможности вставки и удаления строк или может их эмулировать с использованием областей прокрутки. Эта функция включена по историческим причинам, так как все современные эмуляторы программных терминалов обладают такими возможностями.
-
curses.has_key(ch) -
Принимает значение клавиши ch и возвращает
True, если текущий тип терминала распознает клавишу с этим значением.
-
curses.halfdelay(tenths) -
Используется для режима полузадержки, который аналогичен режиму cbreak, в том, что набранные пользователем символы становятся немедленно доступными для программы. Однако, после ожидания в течение tenths десятых долей секунды, генерируется исключение, если не было набрано ничего. Значение tenths должно быть числом между
1и255. Для выхода из режима полузадержки используйтеnocbreak().
-
curses.init_color(color_number, r, g, b) -
Изменить определение цвета, указав номер изменяемого цвета и три значения RGB (для количеств красного, зеленого и синего компонентов). Значение color_number должно быть между
0иCOLORS - 1. Каждое из значений r, g, b должно быть значением между0и1000. При использованииinit_color(), все вхождения этого цвета на экране немедленно изменятся на новое определение. Эта функция является бесполезной на большинстве терминалов; она активна только еслиcan_change_color()возвращаетTrue.
-
curses.init_pair(pair_number, fg, bg) -
Изменить определение пары цветов. Она принимает три аргумента: номер изменяемой пары цветов, номер цвета первого плана и номер цвета фона. Значение pair_number должно быть между
1иCOLOR_PAIRS - 1(пара цвета0связана с белым на черном и не может быть изменена). Значения аргументов fg и bg должны быть между0иCOLORS - 1, или, после вызоваuse_default_colors(),-1. Если пара цветов была ранее инициализирована, экран обновляется, и все вхождения этой пары цветов изменяются на новое определение.
-
curses.initscr() -
Инициализировать библиотеку. Возвращает объект окна, представляющий весь экран.
Примечание
Если при открытии терминала возникла ошибка, основная библиотека curses может привести к выходу интерпретатора.
-
curses.is_term_resized(nlines, ncols) -
Возвращает
Trueеслиresize_term()изменит структуру окна,Falseв противном случае.
-
curses.isendwin() -
Возвращает
Trueеслиendwin()был вызван (то есть библиотека curses была деинициализирована).
-
curses.keyname(k) -
Возвращает имя ключа с номером k в виде объекта bytes. Имя ключа, генерирующего печатаемый ASCII-символ, — это символ ключа. Имя комбинации клавиш управления — это двухбайтовый объект bytes, состоящий из знака каретки (
b'^') и соответствующего печатаемого ASCII-символа. Имя комбинации клавиш alt (128–255) — это объект bytes, состоящий из префиксаb'M-'и имени соответствующего ASCII-символа.
-
curses.killchar() -
Возвращает текущий символ удаления строки пользователя в виде однобайтового объекта bytes. В операционных системах Unix это свойство управляющего tty программы curses, и оно не устанавливается самой библиотекой curses.
-
curses.longname() -
Возвращает объект bytes, содержащий поле длительного имени terminfo, описывающее текущий терминал. Максимальная длина подробного описания составляет 128 символов. Оно определяется только после вызова
initscr().
-
curses.meta(flag) -
Если flag —
True, разрешить ввод символов с 8 битами. Если flag —False, разрешить только 7-битные символы.
-
curses.mouseinterval(interval) -
Установить максимальное время в миллисекундах, которое может пройти между событиями нажатия и отпускания, чтобы их распознавали как щелчок, и вернуть предыдущее значение интервала. Значение по умолчанию составляет 200 мс, или одна пятая секунды.
-
curses.mousemask(mousemask) -
Установить события мыши, которые должны сообщаться, и вернуть кортеж
(availmask, oldmask). availmask указывает, какие из указанных событий мыши могут быть сообщены; при полной ошибке возвращает0. oldmask — предыдущее значение маски событий мыши данного окна. Если эта функция никогда не вызывается, события мыши никогда не сообщаются.
-
curses.napms(ms) -
Подождать ms миллисекунд.
-
curses.newpad(nlines, ncols) -
Создать и вернуть указатель на новую структуру данных pad с заданным числом строк и столбцов. Вернуть pad как объект окна.
Pad похож на окно, за исключением того, что он не ограничен размерами экрана и не обязательно связан с определённой частью экрана. Pads могут использоваться, когда необходимо большое окно, и только часть окна будет видна на экране в один момент. Автоматические обновления pads (такие как при прокрутке или отображении ввода) не происходят. Методы
refresh()иnoutrefresh()пада требуют 6 аргументов для указания части pad, которая должна быть отображена, и расположения на экране, которое должно быть использовано для отображения. Аргументы — pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol; аргументы p относятся к верхнему левому углу области pad, которая должна быть отображена, а аргументы s определяют область обрезки на экране, внутри которой область pad должна быть отображена.
-
curses.newwin(nlines, ncols) -
curses.newwin(nlines, ncols, begin_y, begin_x) -
Возвращает новое окно, верхний левый угол которого находится в
(begin_y, begin_x), а высота/ширина — nlines/ncols.По умолчанию окно будет простираться от указанной позиции до нижнего правого угла экрана.
-
curses.nl() -
Перейти в режим новой строки. В этом режиме нажатие клавиши возврата переводится в новую строку при вводе и новая строка переводится в возврат и подачу строки на вывод. Режим новой строки изначально включён.
-
curses.nocbreak() -
Выход из режима cbreak. Возврат в обычный «обработанный» режим с буферизацией строк.
-
curses.noecho() -
Выход из режима ввода с отображением. Отображение вводимых символов выключено.
-
curses.nonl() -
Выход из режима новой строки. Отключить преобразование возврата в новую строку при вводе и отключить низкоуровневое преобразование новой строки в новую строку/возврат на выходе (но это не меняет поведения
addch('\n'), которое всегда делает эквивалент возврата и подачи строки на виртуальном экране). Без преобразования curses иногда может немного ускорить вертикальное перемещение; также он сможет распознавать клавишу возврата при вводе.
-
curses.noqiflush() -
При использовании процедуры
noqiflush()обычное сброс очередей ввода и вывода, связанных с символамиINTR,QUITиSUSP, не будет выполняться. Возможно, вам нужно вызватьnoqiflush()в обработчике сигнала, если вы хотите, чтобы вывод продолжался, как будто прерывания не произошло, после выхода из обработчика.
-
curses.noraw() -
Выход из режима raw. Возврат в обычный «обработанный» режим с буферизацией строк.
-
curses.pair_content(pair_number) -
Возвращает кортеж
(fg, bg)содержащий цвета для запрошенной пары цветов. Значение pair_number должно быть между0иCOLOR_PAIRS - 1.
-
curses.pair_number(attr) -
Возвращает номер пары цветов, заданной значением атрибута attr.
color_pair()является аналогом этой функции.
-
curses.putp(str) -
Эквивалентно
tputs(str, 1, putchar); выводит значение указанной возможности terminfo для текущего терминала. Обратите внимание, что выводputp()всегда направляется в стандартный вывод.
-
curses.qiflush([flag]) -
Если flag —
False, эффект такой же, как вызовnoqiflush(). Если flag —True, или аргумент не указан, очереди будут сбрасываться при чтении этих управляющих символов.
-
curses.raw() -
Перейти в режим raw. В режиме raw обычная буферизация строк и обработка клавиш прерывания, выхода, приостановки и управления потоком отключены; символы представляются функциям ввода curses по одному.
-
curses.reset_prog_mode() -
Восстановить режим терминала «программа» до ранее сохранённого состояния, как было сохранено
def_prog_mode().
-
curses.reset_shell_mode() -
Восстановить режим терминала «оболочка» до ранее сохранённого состояния, как было сохранено
def_shell_mode().
-
curses.resetty() -
Восстановить состояние режимов терминала до состояния, которое было в момент последнего вызова
savetty().
-
curses.resize_term(nlines, ncols) -
Функция-обработчик, используемая
resizeterm(), выполняющая основную работу при изменении размеров окон; при изменении размеровresize_term()заполняет расширенные области пустым значением. Приложение должно заполнить эти области соответствующими данными. Функцияresize_term()пытается изменить размеры всех окон. Однако из-за соглашений о вызовах для оконных областей (pads) изменение их размеров невозможно без дополнительного взаимодействия с приложением.
-
curses.resizeterm(nlines, ncols) -
Изменяет размеры стандартных и текущих окон на указанные размеры и корректирует другие служебные данные, используемые библиотекой curses, которые хранят размеры окон (в частности, обработчик SIGWINCH).
-
curses.savetty() -
Сохраняет текущее состояние режимов терминала в буфере, который можно использовать с
resetty().
-
curses.setsyx(y, x) -
Устанавливает курсор виртуального экрана в позицию y, x. Если y и x оба
-1, тоleaveokустанавливаетсяTrue.
-
curses.setupterm(term=None, fd=-1) -
Инициализирует терминал. term — строка с именем терминала или
None; если опущено илиNone, используется значение переменной средыTERM. fd — дескриптор файла, в который будут отправлены все инициализирующие последовательности; если не указан или-1, используется дескриптор файла дляsys.stdout.
-
curses.start_color() -
Необходима для использования цветов программистом и должна вызываться до любого другого вызова для управления цветами. Рекомендуется вызывать её сразу после
initscr().start_color()инициализирует восемь основных цветов (чёрный, красный, зелёный, жёлтый, синий, пурпурный, голубой и белый) и две глобальные переменные в модулеcurses,COLORSиCOLOR_PAIRS, содержащие максимальное количество поддерживаемых терминалом цветов и цветовых пар. Также восстанавливает цвета терминала до значений, установленных при его включении.
-
curses.termattrs() -
Возвращает логическое ИЛИ всех атрибутов видео, поддерживаемых терминалом. Эта информация полезна, когда программе curses требуется полный контроль над внешним видом экрана.
-
curses.termname() -
Возвращает значение переменной среды
TERM, как объект bytes, усечённый до 14 символов.
-
curses.tigetflag(capname) -
Возвращает значение булевой возможности, соответствующей имени возможности terminfo capname, как целое число. Возвращает значение
-1, если capname не является булевой возможностью, или0, если она отключена или отсутствует в описании терминала.
-
curses.tigetnum(capname) -
Возвращает значение числовой возможности, соответствующей имени возможности terminfo capname, как целое число. Возвращает значение
-2, если capname не является числовой возможностью, или-1, если она отключена или отсутствует в описании терминала.
-
curses.tigetstr(capname) -
Возвращает значение строковой возможности, соответствующей имени возможности terminfo capname, как объект bytes. Возвращает
None, если capname не является строковой возможностью terminfo, или она отключена или отсутствует в описании терминала.
-
curses.tparm(str[, ...]) -
Инициализирует объект bytes str с предоставленными параметрами, где str должна быть строкой с параметрами, полученной из базы данных terminfo. Например,
tparm(tigetstr("cup"), 5, 3)может привести кb'\033[6;4H', точный результат зависит от типа терминала.
-
curses.typeahead(fd) -
Указывает, что дескриптор файла fd используется для проверки ввода в режиме опережения. Если fd
-1, проверка опережающего ввода не выполняется.Библиотека curses выполняет «оптимизацию разрыва строк», периодически проверяя опережающий ввод при обновлении экрана. Если ввод обнаружен и поступает с tty, текущее обновление откладывается до вызова refresh или doupdate, что позволяет быстрее реагировать на команды, набранные заранее. Эта функция позволяет указать другой дескриптор файла для проверки опережающего ввода.
-
curses.unctrl(ch) -
Возвращает объект bytes, представляющий удобочитаемую форму символа ch. Символы управления представляются как символ «^» и последующий символ, например,
b'^C'. Печатаемые символы возвращаются без изменений.
-
curses.ungetch(ch) -
Возвращает ch в очередь ввода, поэтому следующий вызов
getch()вернёт его.Примечание
Перед вызовом
getch()можно вернуть только один символ ch.
-
curses.update_lines_cols() -
Обновляет
LINESиCOLS. Полезно для обнаружения ручного изменения размера экрана.Добавлена в версии 3.5.
-
curses.unget_wch(ch) -
Возвращает ch в очередь ввода, поэтому следующий вызов
get_wch()вернёт его.Примечание
Перед вызовом
get_wch()можно вернуть только один символ ch.Добавлена в версии 3.3.
-
curses.ungetmouse(id, x, y, z, bstate) -
Возвращает событие
KEY_MOUSEв очередь ввода, связывая с ним предоставленные данные состояния.
-
curses.use_env(flag) -
Если используется, эта функция должна вызываться перед вызовом
initscr()или newterm. При flagFalse, значения строк и столбцов, указанные в базе данных terminfo, будут использоваться, даже если переменные средыLINESиCOLUMNS(используемые по умолчанию) установлены, или если curses работает в окне (в этом случае по умолчанию используется размер окна, еслиLINESиCOLUMNSне установлены).
-
curses.use_default_colors() -
Разрешает использование значений по умолчанию для цветов на терминалах, поддерживающих эту функцию. Используйте для поддержки прозрачности в приложении. Цвет по умолчанию присваивается номеру цвета
-1. После вызова этой функции,init_pair(x, curses.COLOR_RED, -1)инициализирует, например, цветовую пару x с красным цветом переднего плана на фоновом цвете по умолчанию.
-
curses.wrapper(func, ...) -
Инициализирует curses и вызывает другой вызываемый объект func, который должен быть остальной частью вашего приложения curses. Если приложение вызывает исключение, эта функция восстановит терминал в нормальное состояние перед повторным вызовом исключения и созданием трассировки. Вызываемый объект func получает главное окно «stdscr» в качестве первого аргумента, а затем любые другие аргументы, переданные в
wrapper(). Перед вызовом func,wrapper()включает режим cbreak, отключает отображение ввода, включает функциональную клавиатуру терминала и инициализирует цвета, если терминал поддерживает цвет. При выходе (нормальном или по исключению) он восстанавливает режим cooked, включает отображение ввода и отключает функциональную клавиатуру терминала.
Объекты окна
Объекты окна, возвращаемые функциями initscr() и newwin() выше, имеют следующие методы и атрибуты:
-
window.addch(ch[, attr]) -
window.addch(y, x, ch[, attr]) -
Отображает символ ch в позиции
(y, x)с атрибутами attr, перезаписывая любой ранее нарисованный символ в этой позиции. По умолчанию, позиция символа и атрибуты — текущие настройки для объекта окна.Примечание
Запись за пределами окна, подокна или области вывода вызывает ошибку
curses.error. Попытка записи в нижний правый угол окна, подокна или области вывода вызовет исключение после вывода символа.
-
window.addnstr(str, n[, attr]) -
window.addnstr(y, x, str, n[, attr]) -
Отображает не более n символов из строки str в позиции
(y, x)с атрибутами attr, перезаписывая все ранее отображенное.
-
window.addstr(str[, attr]) -
window.addstr(y, x, str[, attr]) -
Отображает строку str в позиции
(y, x)с атрибутами attr, перезаписывая все ранее отображенное.Примечание
- Запись за пределами окна, подокна или области вывода вызывает ошибку
curses.error. Попытка записи в нижний правый угол окна, подокна или области вывода вызовет исключение после вывода строки. - Ошибка в ncurses, бэкенде этого модуля Python, может вызвать SegFaults при изменении размеров окон. Эта проблема исправлена в ncurses-6.1-20190511. Если вы используете более раннюю версию ncurses, можно избежать этой ошибки, если не вызывать
addstr()со строкой str, содержащей встроенные символы новой строки. Вместо этого вызывайтеaddstr()отдельно для каждой строки.
- Запись за пределами окна, подокна или области вывода вызывает ошибку
-
window.attroff(attr) -
Убирает атрибут attr из набора «фоновых» атрибутов, применяемых ко всем записям в текущем окне.
-
window.attron(attr) -
Добавляет атрибут attr к набору «фоновых» атрибутов, применяемых ко всем записям в текущем окне.
-
window.attrset(attr) -
Устанавливает набор атрибутов «фонового» цвета на attr. Изначально этот набор
0(без атрибутов).
-
window.bkgd(ch[, attr]) -
Устанавливает фоновый цвет окна на символ ch с атрибутами attr. Изменение применяется ко всем позициям символов в этом окне:
- Атрибут каждого символа в окне меняется на новый фоновый атрибут.
- Символ предыдущего фонового цвета меняется на новый символ фонового цвета.
-
window.bkgdset(ch[, attr]) -
Устанавливает фоновый цвет окна. Фоновый цвет окна состоит из символа и комбинации атрибутов. Часть атрибута фонового цвета комбинируется (или-вается) со всеми непустыми символами, которые записываются в окно. Обе части фонового цвета — символ и атрибуты — комбинируются с пустыми символами. Фоновый цвет становится свойством символа и перемещается с символом при прокрутке и операциях вставки/удаления строк/символов.
-
window.border([ls[, rs[, ts[, bs[, tl[, tr[, bl[, br]]]]]]]]) -
Рисует рамку вокруг границ окна. Каждый параметр определяет символ, используемый для определенной части рамки; подробности смотрите в таблице ниже.
Примечание
Значение
0для любого параметра приведет к использованию символа по умолчанию. Использование ключевых параметров невозможно. Значения по умолчанию приведены в этой таблице:Параметр
Описание
Значение по умолчанию
ls
Левая сторона
ACS_VLINErs
Правая сторона
ACS_VLINEts
Верхняя часть
ACS_HLINEbs
Нижняя часть
ACS_HLINEtl
Левый верхний угол
ACS_ULCORNERtr
Правый верхний угол
ACS_URCORNERbl
Левый нижний угол
ACS_LLCORNERbr
Правый нижний угол
ACS_LRCORNER
-
window.box([vertch, horch]) -
Аналогично
border(), но и ls, и rs — vertch, и ts, и bs — horch. Символы углов по умолчанию всегда используются в этой функции.
-
window.chgat(attr) -
window.chgat(num, attr) -
window.chgat(y, x, attr) -
window.chgat(y, x, num, attr) -
Устанавливает атрибуты num символов в текущей позиции курсора или в позиции
(y, x)(если указана). Если num не задано или равно-1, атрибут будет установлен для всех символов до конца строки. Функция перемещает курсор в позицию(y, x)(если указана). Измененная строка будет отмечена с помощью методаtouchline(), чтобы содержимое было перерисовано при следующем обновлении окна.
-
window.clear() -
Аналогично
erase(), но также заставляет все окно перерисоваться при следующем вызовеrefresh().
-
window.clearok(flag) -
Если flag равно
True, при следующем вызовеrefresh()окно будет полностью очищено.
-
window.clrtobot() -
Очищает область от курсора до конца окна: все строки ниже курсора удаляются, затем выполняется операция, эквивалентная
clrtoeol().
-
window.clrtoeol() -
Очищает область от курсора до конца строки.
-
window.cursyncup() -
Обновляет текущую позицию курсора всех предков окна, чтобы отразить текущую позицию курсора окна.
-
window.delch([y, x]) -
Удаляет символ в позиции
(y, x).
-
window.deleteln() -
Удаляет строку под курсором. Все последующие строки сдвигаются вверх на одну строку.
-
window.derwin(begin_y, begin_x) -
window.derwin(nlines, ncols, begin_y, begin_x) -
Сокращение от «derive window»,
derwin()то же самое, что и вызовsubwin(), за исключением того, что begin_y и begin_x относятся к началу окна, а не всего экрана. Возвращает объект окна для созданного подокна.
-
window.echochar(ch[, attr]) -
Добавляет символ ch с атрибутами attr и немедленно вызывает
refresh()для окна.
-
window.enclose(y, x) -
Проверяет, находятся ли заданные координаты ячейки символа относительно экрана внутри данного окна, возвращая
TrueилиFalse. Полезно для определения подмножества окон, которые включают положение события мыши.
-
window.encoding -
Кодировка, используемая для кодирования аргументов метода (строки и символы Unicode). Атрибут кодировки наследуется от родительского окна при создании подокна, например, с помощью
window.subwin(). По умолчанию используется кодировка локали (см.locale.getpreferredencoding()).Добавлена в версии 3.3.
-
window.erase() -
Очищает окно.
-
window.getbegyx() -
Возвращает кортеж
(y, x)координат левого верхнего угла.
-
window.getbkgd() -
Возвращает текущую пару символа/атрибута фонового цвета данного окна.
-
window.getch([y, x]) -
Получить символ. Обратите внимание, что возвращаемое целое число не обязательно должно находиться в диапазоне ASCII: клавиши функций, клавиши набора и т. д. представлены числами, большими 255. В режиме без задержки вернуть
-1, если вход отсутствует, иначе подождать, пока не будет нажата клавиша.
-
window.get_wch([y, x]) -
Получить широкий символ. Вернуть символ для большинства клавиш или целое число для клавиш функций, клавиш набора и других специальных клавиш. В режиме без задержки поднять исключение, если вход отсутствует.
Новая версия 3.3.
-
window.getkey([y, x]) -
Получить символ, возвращая строку вместо целого числа, как делает
getch(). Клавиши функций, клавиши набора и другие специальные клавиши возвращают многобайтовую строку, содержащую имя клавиши. В режиме без задержки поднять исключение, если вход отсутствует.
-
window.getmaxyx() -
Возвратить кортеж
(y, x)высоты и ширины окна.
-
window.getparyx() -
Возвратить начальные координаты этого окна относительно его родительского окна в виде кортежа
(y, x). Вернуть(-1, -1), если у этого окна нет родителя.
-
window.getstr() -
window.getstr(n) -
window.getstr(y, x) -
window.getstr(y, x, n) -
Считать байтовый объект от пользователя с примитивными возможностями редактирования строки.
-
window.getyx() -
Возвратить кортеж
(y, x)текущей позиции курсора относительно верхнего левого угла окна.
-
window.hline(ch, n) -
window.hline(y, x, ch, n) -
Отобразить горизонтальную линию, начинающуюся с
(y, x)длиной n, состоящую из символа ch.
-
window.idcok(flag) -
Если flag —
False, curses больше не учитывает использование аппаратного средства вставки/удаления символа терминала; если flag —True, использование вставки и удаления символов включено. При первой инициализации curses использование вставки/удаления символов включено по умолчанию.
-
window.idlok(flag) -
Если flag —
True,cursesбудет пытаться использовать аппаратные средства редактирования строк. В противном случае вставка/удаление строк отключены.
-
window.immedok(flag) -
Если flag —
True, любое изменение изображения окна автоматически приводит к обновлению окна; вам больше не нужно вызыватьrefresh()самостоятельно. Однако это может значительно снизить производительность из-за многократных вызовов wrefresh. Этот параметр отключён по умолчанию.
-
window.inch([y, x]) -
Возвращает символ в заданной позиции в окне. Нижние 8 бит — собственно символ, а старшие биты — атрибуты.
-
window.insch(ch[, attr]) -
window.insch(y, x, ch[, attr]) -
Отобразить символ ch в
(y, x)с атрибутами attr, сдвигая строку из позиции x вправо на один символ.
-
window.insdelln(nlines) -
Вставить nlines строк в указанное окно над текущей строкой. Последние nlines строк теряются. Для отрицательных nlines удалить nlines строк, начиная с той, что находится под курсором, и переместить оставшиеся строки вверх. Последние nlines строк очищаются. Текущая позиция курсора остается неизменной.
-
window.insertln() -
Вставить пустую строку под курсором. Все последующие строки сдвигаются вниз на одну строку.
-
window.insnstr(str, n[, attr]) -
window.insnstr(y, x, str, n[, attr]) -
Вставить строку символов (столько символов, сколько поместится в строке) перед символом под курсором, до n символов. Если n равно нулю или отрицательно, вставляется вся строка. Все символы справа от курсора смещаются вправо, а самые правые символы в строке теряются. Позиция курсора не изменяется (после перемещения в y, x, если указано).
-
window.insstr(str[, attr]) -
window.insstr(y, x, str[, attr]) -
Вставить строку символов (столько символов, сколько поместится в строке) перед символом под курсором. Все символы справа от курсора смещаются вправо, а самые правые символы в строке теряются. Позиция курсора не изменяется (после перемещения в y, x, если указано).
-
window.instr([n]) -
window.instr(y, x[, n]) -
Возвратить байтовый объект символов, извлеченных из окна, начиная с текущей позиции курсора или с y, x, если указано. Атрибуты удаляются из символов. Если указано n,
instr()возвращает строку длиной не более n символов (исключая заключительный NUL).
-
window.is_linetouched(line) -
Возвращает
True, если указанная строка была изменена после последнего вызоваrefresh(); в противном случае возвращаетFalse. Поднять исключениеcurses.error, если line не является допустимым для данного окна.
-
window.is_wintouched() -
Возвращает
True, если указанное окно было изменено после последнего вызоваrefresh(); в противном случае возвращаетFalse.
-
window.keypad(flag) -
Если flag —
True, последовательности escape, созданные некоторыми клавишами (клавиши набора, клавиши функций), будут интерпретироватьсяcurses. Если flag —False, последовательности escape будут оставлены такими, какие они есть, в потоке ввода.
-
window.leaveok(flag) -
Если flag —
True, курсор остается на месте при обновлении вместо того, чтобы быть в «позиции курсора». Это сводит к минимуму перемещение курсора при возможности. Если возможно, курсор будет сделан невидимым. Если flag —False, курсор всегда будет в «позиции курсора» после обновления.
-
window.move(new_y, new_x) -
Переместить курсор в
(new_y, new_x).
-
window.mvderwin(y, x) -
Переместить окно внутри его родительского окна. Экранные относительные параметры окна не изменяются. Эта функция используется для отображения различных частей родительского окна в одном и том же физическом положении на экране.
-
window.mvwin(new_y, new_x) -
Переместить окно так, чтобы его верхний левый угол находился в
(new_y, new_x).
-
window.nodelay(flag) -
Если flag —
True,getch()будет неблокирующим.
-
window.notimeout(flag) -
Если flag —
True, последовательности escape не будут ограничены по времени. Если flag —False, после нескольких миллисекунд последовательность escape не будет интерпретироваться и останется в потоке ввода как есть.
-
window.noutrefresh() -
Пометить для обновления, но подождать. Эта функция обновляет структуру данных, представляющую желаемое состояние окна, но не принудительно обновляет физический экран. Для этого вызовите
doupdate().
-
window.overlay(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol]) -
Наложить окно поверх destwin. Окна могут быть разного размера, копируется только перекрывающаяся область. Эта копия не разрушительная, что означает, что текущий символ фона не перезаписывает старое содержимое destwin. Для получения тонкого управления копируемой областью можно использовать вторую форму
overlay(). sminrow и smincol — координаты верхнего левого угла исходного окна, а другие переменные обозначают прямоугольник в окне назначения.
-
window.overwrite(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol]) -
Перезаписать окно поверх destwin. Окна могут быть разного размера, в этом случае копируется только перекрывающаяся область. Эта копия разрушительная, что означает, что текущий символ фона перезаписывает старое содержимое destwin. Для получения тонкого управления копируемой областью можно использовать вторую форму
overwrite(). sminrow и smincol — координаты верхнего левого угла исходного окна, а другие переменные обозначают прямоугольник в окне назначения.
-
window.putwin(file) -
Записать все данные, связанные с окном, в предоставленный объект файла. Эту информацию можно позже извлечь с помощью функции
getwin().
-
window.redrawln(beg, num) -
Указать, что num строк экрана, начиная со строки beg, повреждены и должны быть полностью перерисованы при следующем вызове
refresh().
-
window.redrawwin() -
Обработать всё окно, вызвав его полную перерисовку при следующем вызове
refresh().
-
window.refresh([pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol]) -
Немедленно обновить дисплей (синхронизировать фактический экран с предыдущими методами рисования/удаления).
6 необязательных аргументов могут быть указаны только тогда, когда окно является областью, созданной с помощью
newpad(). Дополнительные параметры необходимы для указания какой части области и экрана участвуют. pminrow и pmincol указывают верхний левый угол прямоугольника, который должен быть отображен в области. sminrow, smincol, smaxrow и smaxcol указывают края прямоугольника, который должен быть отображен на экране. Нижний правый угол прямоугольника, который должен быть отображен в области, вычисляется из координат экрана, так как прямоугольники должны быть одинакового размера. Оба прямоугольника должны быть полностью содержаться внутри своих соответствующих структур. Отрицательные значения pminrow, pmincol, sminrow или smincol обрабатываются так, как если бы они были равны нулю.
-
window.resize(nlines, ncols) -
Перевыделить память для окна curses, чтобы изменить его размеры на указанные значения. Если размерность больше текущих значений, данные окна заполняются пробелами, в которые включено текущее отображение фона (как установлено с помощью
bkgdset()).
-
window.scroll([lines=1]) -
Прокрутить экран или область прокрутки вверх на lines строк.
-
window.scrollok(flag) -
Управляет тем, что происходит, когда курсор окна перемещается за пределы окна или области прокрутки, либо в результате действия новой строки в нижней строке, либо набора последнего символа последней строки. Если flag равен
False, курсор остается в нижней строке. Если flag равенTrue, окно прокручивается вверх на одну строку. Обратите внимание, что для получения физического эффекта прокрутки на терминале также необходимо вызватьidlok().
-
window.setscrreg(top, bottom) -
Установить область прокрутки от строки top до строки bottom. Все действия прокрутки будут выполняться в этой области.
-
window.standend() -
Выключить выделенный атрибут. На некоторых терминалах это приводит к отключению всех атрибутов.
-
window.standout() -
Включить атрибут A_STANDOUT.
-
window.subpad(begin_y, begin_x) -
window.subpad(nlines, ncols, begin_y, begin_x) -
Возвращает подокно, верхний левый угол которого находится в
(begin_y, begin_x), а ширина/высота которого равна ncols/nlines.
-
window.subwin(begin_y, begin_x) -
window.subwin(nlines, ncols, begin_y, begin_x) -
Возвращает подокно, верхний левый угол которого находится в
(begin_y, begin_x), а ширина/высота которого равна ncols/nlines.По умолчанию подокно будет простираться от указанной позиции до нижнего правого угла окна.
-
window.syncdown() -
Обработать каждый элемент в окне, который был обработан в любом из его родительских окон. Эта процедура вызывается функцией
refresh(), поэтому её вряд ли нужно вызывать вручную.
-
window.syncok(flag) -
Если flag равен
True, тоsyncup()вызывается автоматически всякий раз, когда происходит изменение в окне.
-
window.syncup() -
Обработать все элементы в родительских окнах, которые были изменены в текущем окне.
-
window.timeout(delay) -
Установить поведение чтения с блокировкой или без блокировки для окна. Если delay отрицательно, используется блокирующее чтение (которое будет ожидать бесконечно ввода). Если delay равно нулю, используется неблокирующее чтение, и
getch()вернёт-1, если ввод не ожидается. Если delay положительно, тоgetch()будет блокироваться на delay миллисекунд и возвратит-1, если ввод всё ещё не ожидается по окончании этого времени.
-
window.touchline(start, count[, changed]) -
Предполагается, что count строк были изменены, начиная со строки start. Если changed задано, оно указывает, помечены ли затронутые строки как изменённые (changed
=True) или неизменённые (changed=False).
-
window.touchwin() -
Предполагается, что всё окно было изменено, для целей оптимизации рисования.
-
window.untouchwin() -
Пометить все строки в окне как неизменённые с момента последнего вызова
refresh().
-
window.vline(ch, n) -
window.vline(y, x, ch, n) -
Отобразить вертикальную линию, начинающуюся в
(y, x), длиной n, состоящую из символа ch.
Константы
Модуль curses определяет следующие данные члены:
-
curses.ERR -
Некоторые функции curses, возвращающие целое число, такие как
getch(), возвращаютERRпри ошибке.
-
curses.OK -
Некоторые функции curses, возвращающие целое число, такие как
napms(), возвращаютOKпри успешном выполнении.
-
curses.version -
Объект типа bytes, представляющий текущую версию модуля. Также доступен как
__version__.
-
curses.ncurses_version -
Именованная кортеж, содержащая три компонента версии библиотеки ncurses: major, minor и patch. Все значения являются целыми числами. К компонентам также можно обратиться по имени, поэтому
curses.ncurses_version[0]эквивалентноcurses.ncurses_version.majorи так далее.Доступность: если используется библиотека ncurses.
Новое в версии 3.8.
Некоторые константы доступны для указания атрибутов ячеек символов. Точные доступные константы зависят от системы.
Атрибут | Значение |
|---|---|
| Режим альтернативного набора символов |
| Режим мигания |
| Режим полужирного шрифта |
| Режим приглушенного текста |
| Режим невидимости или пустого текста |
| Режим курсива |
| Нормальный атрибут |
| Режим защиты |
| Режим инверсии цветов фона и переднего плана |
| Режим выделения |
| Режим подчеркивания |
| Выделение по горизонтали |
| Выделение слева |
| Выделение снизу |
| Выделение справа |
| Выделение сверху |
| Выделение по вертикали |
| Маска битов для извлечения символа |
Новое в версии 3.7: A_ITALIC было добавлено.
Несколько констант доступны для извлечения соответствующих атрибутов, возвращаемых некоторыми методами.
Маска битов | Значение |
|---|---|
| Маска битов для извлечения атрибутов |
| Маска битов для извлечения символа |
| Маска битов для извлечения информации о паре цветов |
Кнопки обозначаются целочисленными константами с именами, начинающимися с KEY_. Точные доступные клавиши зависят от системы.
Ключевой констант | Ключ |
|---|---|
| Минимальное значение ключа |
| Ключ разрыва (ненадёжный) |
| Стрелка вниз |
| Стрелка вверх |
| Стрелка влево |
| Стрелка вправо |
| Ключ «Начало» (стрелка вверх+влево) |
| «Удалить» (ненадёжный) |
| Клавиши функций. Поддерживается до 64 клавиш функций. |
| Значение клавиши функции n |
| Удалить строку |
| Вставить строку |
| Удалить символ |
| Вставить символ или войти в режим вставки |
| Выход из режима вставки символа |
| Очистить экран |
| Очистить до конца экрана |
| Очистить до конца строки |
| Прокрутить на 1 строку вперёд |
| Прокрутить на 1 строку назад (обратная прокрутка) |
| Следующая страница |
| Предыдущая страница |
| Установить вкладку |
| Очистить вкладку |
| Очистить все вкладки |
| Ввод или отправка (ненадёжный) |
| Мягкий (частичный) сброс (ненадёжный) |
| Сброс или жёсткий сброс (ненадёжный) |
| Печать |
| Начало вниз или низ (нижний левый) |
| Верхний левый квадрат клавиатуры |
| Верхний правый квадрат клавиатуры |
| Центр клавиатуры |
| Нижний левый квадрат клавиатуры |
| Нижний правый квадрат клавиатуры |
| Возврат вкладки |
| Начало (начало) |
| Отмена |
| Закрыть |
| Команда (команда) |
| Копировать |
| Создать |
| Конец |
| Выход |
| Найти |
| Справка |
| Отметить |
| Сообщение |
| Переместить |
| Следующий |
| Открыть |
| Параметры |
| Пред (предыдущий) |
| Повторить |
| Ссылка (ссылка) |
| Обновить |
| Заменить |
| Перезапустить |
| Продолжить |
| Сохранить |
| Сдвинутое Начало (начало) |
| Сдвинутая Отмена |
| Сдвинутая Команда |
| Сдвинутая Копировать |
| Сдвинутая Создать |
| Сдвинутая Удалить символ |
| Сдвинутая Удалить строку |
| Выбрать |
| Сдвинутый Конец |
| Сдвинутая Очистить строку |
| Сдвинутый Выход |
| Сдвинутая Найти |
| Сдвинутая Справка |
| Сдвинутое Начало |
| Сдвинутый Ввод |
| Сдвинутая Стрелка влево |
| Сдвинутое Сообщение |
| Сдвинутая Переместить |
| Сдвинутый Следующий |
| Сдвинутые Параметры |
| Сдвинутый Пред |
| Сдвинутая Печать |
| Сдвинутая Повторить |
| Сдвинутая Заменить |
| Сдвинутая Стрелка вправо |
| Сдвинутая Продолжить |
| Сдвинутая Сохранить |
| Сдвинутая Приостановить |
| Сдвинутая Отменить |
| Приостановить |
| Отменить |
| Произошло событие обработки мыши |
| Событие изменения размера терминала |
| Максимальное значение ключа |
На VT100 и их программных эмуляциях, таких как эмуляторы X терминала, обычно доступны как минимум четыре клавиши функций (KEY_F1, KEY_F2, KEY_F3, KEY_F4 ), и стрелки сопоставлены с KEY_UP, KEY_DOWN, KEY_LEFT и KEY_RIGHT очевидным образом. Если ваша машина оснащена клавиатурой ПК, можно ожидать стрелки и двенадцать клавиш функций (старые клавиатуры ПК могут иметь только десять клавиш функций); также стандартными являются следующие сопоставления клавиатуры:
Ключ | Константа |
|---|---|
Вставка | KEY_IC |
Удалить | KEY_DC |
Начало | KEY_HOME |
Конец | KEY_END |
Страница вверх | KEY_PPAGE |
Страница вниз | KEY_NPAGE |
В следующей таблице перечислены символы из альтернативного набора символов. Они унаследованы от терминала VT100 и, как правило, доступны в программных эмуляциях, таких как терминалы X. Если графический символ недоступен, curses использует грубое приближение символа ASCII.
Примечание
Они доступны только после того, как был вызван initscr().
Код ACS | Значение |
|---|---|
| альтернативное название для правого верхнего угла |
| плотный квадратный блок |
| доска из квадратов |
| альтернативное название для горизонтальной линии |
| альтернативное название для левого верхнего угла |
| альтернативное название для верхней Т-образной опоры |
| нижняя Т-образная опора |
| пуля |
| шахматная доска (штриховка) |
| стрелка, направленная вниз |
| символ градуса |
| ромб |
| больше или равно |
| горизонтальная линия |
| символ фонаря |
| стрелка влево |
| меньше или равно |
| левый нижний угол |
| правый нижний угол |
| левая Т-образная опора |
| знак не равно |
| буква пи |
| знак плюс-минус |
| большой знак плюс |
| стрелка вправо |
| правая Т-образная опора |
| строка сканирования 1 |
| строка сканирования 3 |
| строка сканирования 7 |
| строка сканирования 9 |
| альтернативное название для правого нижнего угла |
| альтернативное название для вертикальной линии |
| альтернативное название для правой Т-образной опоры |
| альтернативное название для левого нижнего угла |
| альтернативное название для нижней Т-образной опоры |
| альтернативное название для левой Т-образной опоры |
| альтернативное название для пересечения или большого плюса |
| фунт стерлингов |
| верхняя Т-образная опора |
| стрелка вверх |
| левый верхний угол |
| правый верхний угол |
| вертикальная линия |
В следующей таблице перечислены предопределенные цвета:
Константа | Цвет |
|---|---|
| Черный |
| Синий |
| Сине-зеленый (светло-зеленоватый синий) |
| Зеленый |
| Пурпурно-красный (пурпурный красный) |
| Красный |
| Белый |
| Желтый |
© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.8/library/curses.html