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 содержатся примеры программ с использованием привязок 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.get_escdelay() -
Возвращает значение, установленное функцией
set_escdelay().Новое в версии 3.9.
-
curses.set_escdelay(ms) -
Устанавливает количество миллисекунд ожидания после считывания управляющего символа, чтобы различать отдельный управляющий символ, введённый с клавиатуры, и последовательности управляющих символов, отправленные курсором и функциональными клавишами.
Новое в версии 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()он был возвращён.Примечание
Можно добавить только один символ ch в очередь перед вызовом
getch().
-
curses.update_lines_cols() -
Обновляет
LINESиCOLS. Полезно для обнаружения изменения размеров экрана пользователем.Новое в версии 3.5.
-
curses.unget_wch(ch) -
Добавляет ch в очередь, чтобы при следующем вызове
get_wch()он был возвращён.Примечание
Можно добавить только один символ ch в очередь перед вызовом
get_wch().Новое в версии 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, /, *args, **kwargs) -
Инициализирует curses и вызывает другой вызываемый объект, func, который должен содержать остальную часть вашего приложения, использующего curses. Если приложение вызывает исключение, эта функция восстановит терминал в нормальное состояние перед повторной генерацией исключения и выводом отслеживания ошибок. Вызываемый объект func затем получает главное окно ‘stdscr’ в качестве первого аргумента, за которым следуют любые другие аргументы, переданные в
wrapper(). Перед вызовом func,wrapper()включает режим cbreak, отключает режим echo, включает клавиатуру терминала и инициализирует цвета, если терминал поддерживает цвета. При выходе (нормальном или с исключением) он восстанавливает режим cooked, включает режим echo и отключает клавиатуру терминала.
Объекты окон
Объекты окон, возвращаемые функциями 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.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. Это полезно для определения, какие окна экрана охватывают местоположение события мыши.
-
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_. Точные доступные клавиши зависят от системы.
Ключевая константа | Ключ |
|---|---|
| Минимальное значение ключа |
| Ключ разрыва (ненадежный) |
| Стрелка вниз |
| Стрелка вверх |
| Стрелка влево |
| Стрелка вправо |
| Ключ 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 |
Page Up | KEY_PPAGE |
Page Down | 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.9/library/curses.html