curses — Обработка терминала для дисплеев с ячейками символов
Исходный код: Lib/curses
Модуль curses предоставляет интерфейс к библиотеке curses, фактическому стандарту для переносимой расширенной обработки терминала.
Хотя curses чаще всего используется в среде Unix, версии доступны для Windows, DOS и, возможно, для других систем. Этот модуль расширения разработан для соответствия API ncurses, открытой библиотеки curses, размещённой в Linux и BSD-вариантах Unix.
Примечание
Всякий раз, когда в документации упоминается символ, он может быть указан как целое число, строка Unicode длиной в один символ или строка байтов длиной в один байт.
Всякий раз, когда в документации упоминается строка символов, она может быть указана как строка Unicode или строка байтов.
Примечание
Начиная с версии 5.4, библиотека ncurses определяет, как интерпретировать данные, не являющиеся ASCII, с помощью функции nl_langinfo. Это означает, что вам необходимо вызвать locale.setlocale() в приложении и кодировать строки Unicode с помощью одного из доступных системных кодирований. В этом примере используется системное кодирование по умолчанию:
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, от Эндрю Куклинг и Эрика Реймонда.
В каталоге Tools/demo/ в дистрибутиве исходного кода Python находятся некоторые примеры программ с использованием связываний 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() -
Возвращает текущий символ стирания пользователя в виде байтового объекта длиной один байт. В 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 до 5:BUTTONn_PRESSED,BUTTONn_RELEASED,BUTTONn_CLICKED,BUTTONn_DOUBLE_CLICKED,BUTTONn_TRIPLE_CLICKED,BUTTON_SHIFT,BUTTON_CTRL,BUTTON_ALT.Изменено в версии 3.10: Константы
BUTTON5_*теперь доступны, если они предоставляются основной библиотекой curses.
-
curses.getsyx() -
Возвращает текущие координаты курсора виртуального экрана как кортеж
(y, x). Еслиleaveokв настоящее времяTrue, то возвращается(-1, -1).
-
curses.getwin(file) -
Считывает данные, относящиеся к окну, сохранённые в файле в результате предыдущего вызова
putwin(). Затем функция создаёт и инициализирует новое окно, используя эти данные, и возвращает новый объект окна.
-
curses.has_colors() -
Возвращает
True, если терминал может отображать цвета; в противном случае возвращаетFalse.
-
curses.has_extended_color_support() -
Возвращает
True, если модуль поддерживает расширенные цвета; в противном случае возвращаетFalse. Поддержка расширенных цветов позволяет использовать более 256 пар цветов для терминалов, которые поддерживают более 16 цветов (например, xterm-256color).Расширенная поддержка цветов требует ncurses версии 6.1 или выше.
Добавлен в версии 3.10.
-
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) -
Создаёт и возвращает указатель на новую структуру данных области с заданным количеством строк и столбцов. Возвращает область как объект окна.
Область похожа на окно, за исключением того, что она не ограничена размерами экрана и необязательно связана с определённой частью экрана. Области могут использоваться, когда нужно большое окно, и только часть окна будет отображаться на экране в один момент. Автоматические обновления областей (например, при прокрутке или отображении ввода) не происходят. Методы
refresh()иnoutrefresh()области требуют 6 аргументов для указания части области, подлежащей отображению, и местоположения на экране для отображения. Аргументы: pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol; аргументы p относятся к левому верхнему углу области, подлежащей отображению, а аргументы s определяют прямоугольник обрезки на экране, в рамках которого область отображается.
-
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.get_escdelay() -
Извлечение значения, установленного функцией
set_escdelay().Добавлена в версии 3.9.
-
curses.set_escdelay(ms) -
Устанавливает количество миллисекунд, которое следует ожидать после чтения символа escape, чтобы отличить отдельный символ escape, введенный с клавиатуры, от последовательностей escape, отправленных клавишами курсора и функциональными клавишами.
Добавлена в версии 3.9.
-
curses.get_tabsize() -
Извлечение значения, установленного функцией
set_tabsize().Добавлена в версии 3.9.
-
curses.set_tabsize(size) -
Устанавливает количество столбцов, используемых библиотекой curses при преобразовании символа табуляции в пробелы при добавлении табуляции в окно.
Добавлена в версии 3.9.
-
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. Когда flag равенFalse, значения строк и столбцов, указанные в базе данных terminfo, будут использоваться, даже если переменные средыLINESиCOLUMNS(используемые по умолчанию) установлены, или если curses работает в окне (в этом случае по умолчанию будет использоваться размер окна, еслиLINESиCOLUMNSне установлены).
-
curses.use_default_colors() -
Разрешить использование значений по умолчанию для цветов на терминалах, поддерживающих эту функцию. Используйте это для поддержки прозрачности в вашем приложении. Цвет по умолчанию назначается номеру цвета
-1. После вызова этой функции,init_pair(x, curses.COLOR_RED, -1)инициализирует, например, пару цвета x с красным цветом переднего плана на фоновом цвете по умолчанию.
-
curses.wrapper(func, /, *args, **kwargs) -
Инициализирует 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 для всех последующих выводов в текущее окно. Изначально этот набор пуст (без атрибутов).
-
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.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) -
Сокращение от «производное окно»,
derwin()эквивалентно вызовуsubwin(), за исключением того, что begin_y и begin_x относятся к началу данного окна, а не к всему экрану. Возвращает объект окна для производного окна.
-
window.echochar(ch[, attr]) -
Добавляет символ ch с атрибутами attr и немедленно вызывает
refresh()для окна.
-
window.enclose(y, x) -
Проверяет, находятся ли заданные экранные координаты в пределах данного окна, возвращая
TrueилиFalseсоответственно. Это полезно для определения подмножества окон на экране, которые содержат позицию события мыши.Изменено в версии 3.10: Ранее возвращались
1или0вместо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[, attr]) -
window.vline(y, x, ch, n[, attr]) -
Отображает вертикальную линию, начинающуюся в
(y, x), длиной n, состоящую из символа ch с атрибутами attr.
Постоянные значения
Модуль 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_. Точные доступные символы на клавиатуре зависят от системы.
Ключевая константа | Ключ |
|---|---|
| Минимальное значение ключа |
| Ключ разрыва (ненадежный) |
| Стрелка вниз |
| Стрелка вверх |
| Стрелка влево |
| Стрелка вправо |
| Ключ Home (стрелка вверх + влево) |
| Backspace (ненадежный) |
| Клавиши функций. Поддерживается до 64 клавиш функций. |
| Значение клавиши функции n |
| Удалить строку |
| Вставить строку |
| Удалить символ |
| Вставить символ или перейти в режим вставки |
| Выход из режима вставки символа |
| Очистить экран |
| Очистить до конца экрана |
| Очистить до конца строки |
| Прокрутить на 1 строку вперед |
| Прокрутить на 1 строку назад (обратный) |
| Следующая страница |
| Предыдущая страница |
| Установить табуляцию |
| Очистить табуляцию |
| Очистить все табуляции |
| Ввод или отправка (ненадежный) |
| Мягкий (частичный) сброс (ненадежный) |
| Сброс или жесткий сброс (ненадежный) |
| Печать |
| Вниз или в низ (нижний левый) |
| В верхнем левом углу клавиатуры |
| В верхнем правом углу клавиатуры |
| Центр клавиатуры |
| В нижнем левом углу клавиатуры |
| В нижнем правом углу клавиатуры |
| Возврат табуляции |
| Нач (начало) |
| Отмена |
| Закрыть |
| Cmd (команда) |
| Копировать |
| Создать |
| Конец |
| Выход |
| Найти |
| Справка |
| Пометка |
| Сообщение |
| Переместить |
| Далее |
| Открыть |
| Параметры |
| Пред (предыдущий) |
| Повторить |
| Спр (ссылка) |
| Обновить |
| Заменить |
| Перезапустить |
| Возобновить |
| Сохранить |
| Сдвинутый Нач (начало) |
| Сдвинутая Отмена |
| Сдвинутая Команда |
| Сдвинутая Копировать |
| Сдвинутая Создать |
| Сдвинутая Удалить символ |
| Сдвинутая Удалить строку |
| Выбрать |
| Сдвинутый Конец |
| Сдвинутая Очистить строку |
| Сдвинутый Выход |
| Сдвинутая Найти |
| Сдвинутая Справка |
| Сдвинутый Home |
| Сдвинутый Ввод |
| Сдвинутая Стрелка влево |
| Сдвинутое Сообщение |
| Сдвинутая Переместить |
| Сдвинутый Далее |
| Сдвинутые Параметры |
| Сдвинутый Пред |
| Сдвинутая Печать |
| Сдвинутый Повторить |
| Сдвинутая Заменить |
| Сдвинутая Стрелка вправо |
| Сдвинутое Возобновить |
| Сдвинутое Сохранить |
| Сдвинутая Пауза |
| Сдвинутое Отменить |
| Приостановить |
| Отменить |
| Произошло событие мыши |
| Событие изменения размера терминала |
| Максимальное значение ключа |
На VT100 и их программных эмуляциях, таких как эмуляторы X терминала, обычно доступны как минимум четыре клавиши функции (KEY_F1, KEY_F2, KEY_F3, KEY_F4). Кнопки со стрелками сопоставлены со значениями KEY_UP, KEY_DOWN, KEY_LEFT и KEY_RIGHT очевидным образом. Если у вашей машины есть клавиатура ПК, можно ожидать клавиши со стрелками и двенадцать клавиш функций (более старые клавиатуры ПК могут иметь только десять клавиш функций); также следующие сопоставления клавиш клавиатуры являются стандартными:
Надпись клавиши | Константа |
|---|---|
Вставить | KEY_IC |
Удалить | KEY_DC |
Home | KEY_HOME |
End | KEY_END |
Страница Вверх | KEY_PPAGE |
Страница Вниз | KEY_NPAGE |
В следующей таблице перечислены символы из альтернативного набора символов. Они унаследованы от терминала VT100 и, как правило, будут доступны в программных эмуляциях, таких как X-терминалы. Если графического символа нет, curses использует грубую печатную ASCII-аппроксимацию.
Примечание
Они доступны только после вызова initscr().
Код ACS | Значение |
|---|---|
| альтернативное название для правого верхнего угла |
| сплошной квадратный блок |
| набор квадратов |
| альтернативное название для горизонтальной линии |
| альтернативное название для левого верхнего угла |
| альтернативное название для верхней Т-образной детали |
| нижняя Т-образная деталь |
| пуля |
| шахматная доска (штриховка) |
| стрелка, направленная вниз |
| символ градуса |
| ромб |
| больше или равно |
| горизонтальная линия |
| символ фонаря |
| стрелка влево |
| меньше или равно |
| левый нижний угол |
| правый нижний угол |
| левая Т-образная деталь |
| знак не равно |
| буква пи |
| знак плюс-минус |
| большой знак плюс |
| стрелка вправо |
| правая Т-образная деталь |
| линия сканирования 1 |
| линия сканирования 3 |
| линия сканирования 7 |
| линия сканирования 9 |
| альтернативное название для правого нижнего угла |
| альтернативное название для вертикальной линии |
| альтернативное название для правой Т-образной детали |
| альтернативное название для левого нижнего угла |
| альтернативное название для нижней Т-образной детали |
| альтернативное название для левой Т-образной детали |
| альтернативное название для пересечения или большого знака плюс |
| фунт стерлингов |
| верхняя Т-образная деталь |
| стрелка вверх |
| левый верхний угол |
| правый верхний угол |
| вертикальная линия |
В следующей таблице перечислены предопределенные цвета:
Константа | Цвет |
|---|---|
| Черный |
| Синий |
| Цветан (светло-зеленовато-синий) |
| Зеленый |
| Маджента (пурпурно-красный) |
| Красный |
| Белый |
| Желтый |
© 2001–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.10/library/curses.html