Spec-Zone.ru › Python 3.8

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().

См. также

Module curses.ascii

Утилиты для работы с символами ASCII независимо от настроек вашего локали.

Module curses.panel

Расширение стека панелей, добавляющее глубину окнам curses.

Module curses.textpad

Редактируемый текстовый виджет для curses, поддерживающий связывания в стиле Emacs.

Программирование с использованием curses на Python

Материал по руководству по использованию curses с Python, авторы Andrew Kuchling и Eric Raymond.

В каталоге Tools/demo/ в дистрибутиве исходного кода Python содержатся примеры программ, использующие bindings curses, предоставляемые этим модулем.

Функции

Модуль curses определяет следующую исключительную ситуацию:

exception curses.error

Исключение, генерируемое, когда функция библиотеки curses возвращает ошибку.

Примечание

Всякий раз, когда аргументы x или y в функции или методе являются необязательными, они по умолчанию принимают значение текущих координат курсора. Когда attr является необязательным, он по умолчанию равен A_NORMAL.

Модуль curses определяет следующие функции:

curses.baudrate()

Возвращает скорость вывода терминала в битах в секунду. В эмуляторах программных терминалов она будет иметь фиксированное высокое значение. Включено по историческим причинам; в прежние времена использовалось для написания циклов вывода с задержками и иногда для изменения интерфейсов в зависимости от скорости линии.

curses.beep()

Издает короткий звуковой сигнал.

curses.can_change_color()

Возвращает True или False, в зависимости от возможности изменения пользователем отображаемых цветом на терминале.

curses.cbreak()

Переход в режим cbreak. В режиме cbreak (иногда называемом «редким» режимом) обычное буферирование строки tty выключается, и символы доступны для чтения по одному. Однако, в отличие от режима raw, специальные символы (прерывание, выход, приостановка и управление потоком) сохраняют свои эффекты на драйвере tty и вызывающей программе. Вызов сначала raw(), а затем cbreak() оставляет терминал в режиме cbreak.

curses.color_content(color_number)

Возвращает интенсивность красного, зеленого и синего (RGB) компонентов в цвете color_number, который должен быть между 0 и COLORS - 1. Возвращает кортеж из 3 значений, содержащих значения R, G, B для заданного цвета, которые будут находиться между 0 (нет компонента) и 1000 (максимальное значение компонента).

curses.color_pair(pair_number)

Возвращает значение атрибута для отображения текста в указанной паре цветов. Поддерживаются только первые 256 пар цветов. Это значение атрибута может быть объединено с A_STANDOUT, A_REVERSE, и другими A_* атрибутами. pair_number() является аналогом этой функции.

curses.curs_set(visibility)

Устанавливает состояние курсора. visibility может быть установлен в 0, 1, или 2, для невидимого, обычного или очень видимого. Если терминал поддерживает запрошенную видимость, возвращает предыдущее состояние курсора; в противном случае генерирует исключение. На многих терминалах «видимый» режим — курсор-подчеркивание, а «очень видимый» режим — курсор-блок.

curses.def_prog_mode()

Сохраняет текущий режим терминала как «программный» режим, режим, когда запущенная программа использует curses. (Его аналогом является «оболочечный» режим, когда программа не использует curses.) Последующие вызовы reset_prog_mode() восстановят этот режим.

curses.def_shell_mode()

Сохраняет текущий режим терминала как «оболочечный» режим, режим, когда запущенная программа не использует curses. (Его аналогом является «программный» режим, когда программа использует возможности curses.) Последующие вызовы reset_shell_mode() восстановят этот режим.

curses.delay_output(ms)

Вставляет паузу в ms миллисекунд в выводе.

curses.doupdate()

Обновляет физический экран. Библиотека curses поддерживает две структуры данных: одна представляет текущее состояние физического экрана, а другая — виртуальный экран, представляющий желаемое следующее состояние. Метод doupdate() обновляет физический экран для соответствия виртуальному.

Виртуальный экран может быть обновлен вызовом noutrefresh() после выполнения операций записи, таких как addstr(), над окном. Обычный вызов refresh() просто noutrefresh() за которым следует doupdate(); если вам нужно обновить несколько окон, вы можете ускорить производительность и, возможно, уменьшить мерцание экрана, вызвав вызовы noutrefresh() для всех окон, а затем один вызов doupdate().

curses.echo()

Переход в режим ввода с эхом. В режиме ввода с эхом каждый вводимый символ отображается на экране по мере ввода.

curses.endwin()

Деинициализирует библиотеку и возвращает терминал в обычное состояние.

curses.erasechar()

Возвращает текущий символ удаления пользователя в виде объекта типа bytes длиной один байт. Под Unix-подобными операционными системами это свойство управляющего tty программы curses, и оно не устанавливается самой библиотекой curses.

curses.filter()

Функция filter(), если используется, должна быть вызвана до вызова initscr(). Это приведет к тому, что во время этих вызовов LINES установлено в 1; возможности clear, cup, cud, cud1, cuu1, cuu, vpa отключены; и строка home установлена в значение cr.

curses.flash()

Мгновенно мигает экраном. То есть, меняет его на режим обратного видео, а затем возвращает обратно в короткий интервал. Некоторые предпочитают такой «видимый звонок» звуковому сигналу, генерируемому функцией beep().

curses.flushinp()

Очищает все буферы ввода. Это отбрасывает все набранные пользователем данные, которые еще не обработаны программой.

curses.getmouse()

После того, как getch() возвращает KEY_MOUSE для сигнализации о событии мыши, этот метод должен быть вызван для извлечения очереди события мыши, представленного в виде 5-кортежа (id, x, y, z, bstate). id — значение идентификатора, используемое для различения нескольких устройств, а x, y, z — координаты события. (z в настоящее время не используется.) bstate — целое число, биты которого будут установлены для указания типа события и будет являться побитовым ИЛИ одного или нескольких из следующих констант, где n — номер кнопки от 1 до 4: BUTTONn_PRESSED, BUTTONn_RELEASED, BUTTONn_CLICKED, BUTTONn_DOUBLE_CLICKED, BUTTONn_TRIPLE_CLICKED, BUTTON_SHIFT, BUTTON_CTRL, BUTTON_ALT.

curses.getsyx()

Возвращает текущие координаты виртуального курсора экрана в виде кортежа (y, x). Если leaveok в настоящее время True, возвращает (-1, -1).

curses.getwin(file)

Считывает данные, относящиеся к окну, сохраненные в файле после предыдущего вызова putwin(). Затем функция создаёт и инициализирует новое окно, используя эти данные, и возвращает новый объект окна.

curses.has_colors()

Возвращает True, если терминал может отображать цвета; в противном случае возвращает False.

curses.has_ic()

Возвращает True, если терминал имеет возможности вставки и удаления символов. Эта функция включена по историческим причинам, так как все современные эмуляторы программных терминалов обладают такими возможностями.

curses.has_il()

Возвращает True, если терминал имеет возможности вставки и удаления строк или может их эмулировать с использованием областей прокрутки. Эта функция включена по историческим причинам, так как все современные эмуляторы программных терминалов обладают такими возможностями.

curses.has_key(ch)

Принимает значение клавиши ch и возвращает True, если текущий тип терминала распознает клавишу с этим значением.

curses.halfdelay(tenths)

Используется для режима полузадержки, который аналогичен режиму cbreak, в том, что набранные пользователем символы становятся немедленно доступными для программы. Однако, после ожидания в течение tenths десятых долей секунды, генерируется исключение, если не было набрано ничего. Значение tenths должно быть числом между 1 и 255. Для выхода из режима полузадержки используйте nocbreak().

curses.init_color(color_number, r, g, b)

Изменить определение цвета, указав номер изменяемого цвета и три значения RGB (для количеств красного, зеленого и синего компонентов). Значение color_number должно быть между 0 и COLORS - 1. Каждое из значений r, g, b должно быть значением между 0 и 1000. При использовании init_color(), все вхождения этого цвета на экране немедленно изменятся на новое определение. Эта функция является бесполезной на большинстве терминалов; она активна только если can_change_color() возвращает True.

curses.init_pair(pair_number, fg, bg)

Изменить определение пары цветов. Она принимает три аргумента: номер изменяемой пары цветов, номер цвета первого плана и номер цвета фона. Значение pair_number должно быть между 1 и COLOR_PAIRS - 1 (пара цвета 0 связана с белым на черном и не может быть изменена). Значения аргументов fg и bg должны быть между 0 и COLORS - 1, или, после вызова use_default_colors(), -1. Если пара цветов была ранее инициализирована, экран обновляется, и все вхождения этой пары цветов изменяются на новое определение.

curses.initscr()

Инициализировать библиотеку. Возвращает объект окна, представляющий весь экран.

Примечание

Если при открытии терминала возникла ошибка, основная библиотека curses может привести к выходу интерпретатора.

curses.is_term_resized(nlines, ncols)

Возвращает True если resize_term() изменит структуру окна, False в противном случае.

curses.isendwin()

Возвращает True если endwin() был вызван (то есть библиотека curses была деинициализирована).

curses.keyname(k)

Возвращает имя ключа с номером k в виде объекта bytes. Имя ключа, генерирующего печатаемый ASCII-символ, — это символ ключа. Имя комбинации клавиш управления — это двухбайтовый объект bytes, состоящий из знака каретки (b'^') и соответствующего печатаемого ASCII-символа. Имя комбинации клавиш alt (128–255) — это объект bytes, состоящий из префикса b'M-' и имени соответствующего ASCII-символа.

curses.killchar()

Возвращает текущий символ удаления строки пользователя в виде однобайтового объекта bytes. В операционных системах Unix это свойство управляющего tty программы curses, и оно не устанавливается самой библиотекой curses.

curses.longname()

Возвращает объект bytes, содержащий поле длительного имени terminfo, описывающее текущий терминал. Максимальная длина подробного описания составляет 128 символов. Оно определяется только после вызова initscr().

curses.meta(flag)

Если flag — True, разрешить ввод символов с 8 битами. Если flag — False, разрешить только 7-битные символы.

curses.mouseinterval(interval)

Установить максимальное время в миллисекундах, которое может пройти между событиями нажатия и отпускания, чтобы их распознавали как щелчок, и вернуть предыдущее значение интервала. Значение по умолчанию составляет 200 мс, или одна пятая секунды.

curses.mousemask(mousemask)

Установить события мыши, которые должны сообщаться, и вернуть кортеж (availmask, oldmask). availmask указывает, какие из указанных событий мыши могут быть сообщены; при полной ошибке возвращает 0. oldmask — предыдущее значение маски событий мыши данного окна. Если эта функция никогда не вызывается, события мыши никогда не сообщаются.

curses.napms(ms)

Подождать ms миллисекунд.

curses.newpad(nlines, ncols)

Создать и вернуть указатель на новую структуру данных pad с заданным числом строк и столбцов. Вернуть pad как объект окна.

Pad похож на окно, за исключением того, что он не ограничен размерами экрана и не обязательно связан с определённой частью экрана. Pads могут использоваться, когда необходимо большое окно, и только часть окна будет видна на экране в один момент. Автоматические обновления pads (такие как при прокрутке или отображении ввода) не происходят. Методы refresh() и noutrefresh() пада требуют 6 аргументов для указания части pad, которая должна быть отображена, и расположения на экране, которое должно быть использовано для отображения. Аргументы — pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol; аргументы p относятся к верхнему левому углу области pad, которая должна быть отображена, а аргументы s определяют область обрезки на экране, внутри которой область pad должна быть отображена.

curses.newwin(nlines, ncols)
curses.newwin(nlines, ncols, begin_y, begin_x)

Возвращает новое окно, верхний левый угол которого находится в (begin_y, begin_x), а высота/ширина — nlines/ncols.

По умолчанию окно будет простираться от указанной позиции до нижнего правого угла экрана.

curses.nl()

Перейти в режим новой строки. В этом режиме нажатие клавиши возврата переводится в новую строку при вводе и новая строка переводится в возврат и подачу строки на вывод. Режим новой строки изначально включён.

curses.nocbreak()

Выход из режима cbreak. Возврат в обычный «обработанный» режим с буферизацией строк.

curses.noecho()

Выход из режима ввода с отображением. Отображение вводимых символов выключено.

curses.nonl()

Выход из режима новой строки. Отключить преобразование возврата в новую строку при вводе и отключить низкоуровневое преобразование новой строки в новую строку/возврат на выходе (но это не меняет поведения addch('\n'), которое всегда делает эквивалент возврата и подачи строки на виртуальном экране). Без преобразования curses иногда может немного ускорить вертикальное перемещение; также он сможет распознавать клавишу возврата при вводе.

curses.noqiflush()

При использовании процедуры noqiflush() обычное сброс очередей ввода и вывода, связанных с символами INTR, QUIT и SUSP, не будет выполняться. Возможно, вам нужно вызвать noqiflush() в обработчике сигнала, если вы хотите, чтобы вывод продолжался, как будто прерывания не произошло, после выхода из обработчика.

curses.noraw()

Выход из режима raw. Возврат в обычный «обработанный» режим с буферизацией строк.

curses.pair_content(pair_number)

Возвращает кортеж (fg, bg) содержащий цвета для запрошенной пары цветов. Значение pair_number должно быть между 0 и COLOR_PAIRS - 1.

curses.pair_number(attr)

Возвращает номер пары цветов, заданной значением атрибута attr. color_pair() является аналогом этой функции.

curses.putp(str)

Эквивалентно tputs(str, 1, putchar); выводит значение указанной возможности terminfo для текущего терминала. Обратите внимание, что вывод putp() всегда направляется в стандартный вывод.

curses.qiflush([flag])

Если flag — False, эффект такой же, как вызов noqiflush(). Если flag — True, или аргумент не указан, очереди будут сбрасываться при чтении этих управляющих символов.

curses.raw()

Перейти в режим raw. В режиме raw обычная буферизация строк и обработка клавиш прерывания, выхода, приостановки и управления потоком отключены; символы представляются функциям ввода curses по одному.

curses.reset_prog_mode()

Восстановить режим терминала «программа» до ранее сохранённого состояния, как было сохранено def_prog_mode().

curses.reset_shell_mode()

Восстановить режим терминала «оболочка» до ранее сохранённого состояния, как было сохранено def_shell_mode().

curses.resetty()

Восстановить состояние режимов терминала до состояния, которое было в момент последнего вызова savetty().

END_OF_DOCUMENT_MARKER
curses.resize_term(nlines, ncols)

Функция-обработчик, используемая resizeterm(), выполняющая основную работу при изменении размеров окон; при изменении размеров resize_term() заполняет расширенные области пустым значением. Приложение должно заполнить эти области соответствующими данными. Функция resize_term() пытается изменить размеры всех окон. Однако из-за соглашений о вызовах для оконных областей (pads) изменение их размеров невозможно без дополнительного взаимодействия с приложением.

curses.resizeterm(nlines, ncols)

Изменяет размеры стандартных и текущих окон на указанные размеры и корректирует другие служебные данные, используемые библиотекой curses, которые хранят размеры окон (в частности, обработчик SIGWINCH).

curses.savetty()

Сохраняет текущее состояние режимов терминала в буфере, который можно использовать с resetty().

curses.setsyx(y, x)

Устанавливает курсор виртуального экрана в позицию y, x. Если y и x оба -1, то leaveok устанавливается True.

curses.setupterm(term=None, fd=-1)

Инициализирует терминал. term — строка с именем терминала или None; если опущено или None, используется значение переменной среды TERM. fd — дескриптор файла, в который будут отправлены все инициализирующие последовательности; если не указан или -1, используется дескриптор файла для sys.stdout.

curses.start_color()

Необходима для использования цветов программистом и должна вызываться до любого другого вызова для управления цветами. Рекомендуется вызывать её сразу после initscr().

start_color() инициализирует восемь основных цветов (чёрный, красный, зелёный, жёлтый, синий, пурпурный, голубой и белый) и две глобальные переменные в модуле curses, COLORS и COLOR_PAIRS, содержащие максимальное количество поддерживаемых терминалом цветов и цветовых пар. Также восстанавливает цвета терминала до значений, установленных при его включении.

curses.termattrs()

Возвращает логическое ИЛИ всех атрибутов видео, поддерживаемых терминалом. Эта информация полезна, когда программе curses требуется полный контроль над внешним видом экрана.

curses.termname()

Возвращает значение переменной среды TERM, как объект bytes, усечённый до 14 символов.

curses.tigetflag(capname)

Возвращает значение булевой возможности, соответствующей имени возможности terminfo capname, как целое число. Возвращает значение -1, если capname не является булевой возможностью, или 0, если она отключена или отсутствует в описании терминала.

curses.tigetnum(capname)

Возвращает значение числовой возможности, соответствующей имени возможности terminfo capname, как целое число. Возвращает значение -2, если capname не является числовой возможностью, или -1, если она отключена или отсутствует в описании терминала.

curses.tigetstr(capname)

Возвращает значение строковой возможности, соответствующей имени возможности terminfo capname, как объект bytes. Возвращает None, если capname не является строковой возможностью terminfo, или она отключена или отсутствует в описании терминала.

curses.tparm(str[, ...])

Инициализирует объект bytes str с предоставленными параметрами, где str должна быть строкой с параметрами, полученной из базы данных terminfo. Например, tparm(tigetstr("cup"), 5, 3) может привести к b'\033[6;4H', точный результат зависит от типа терминала.

curses.typeahead(fd)

Указывает, что дескриптор файла fd используется для проверки ввода в режиме опережения. Если fd -1, проверка опережающего ввода не выполняется.

Библиотека curses выполняет «оптимизацию разрыва строк», периодически проверяя опережающий ввод при обновлении экрана. Если ввод обнаружен и поступает с tty, текущее обновление откладывается до вызова refresh или doupdate, что позволяет быстрее реагировать на команды, набранные заранее. Эта функция позволяет указать другой дескриптор файла для проверки опережающего ввода.

curses.unctrl(ch)

Возвращает объект bytes, представляющий удобочитаемую форму символа ch. Символы управления представляются как символ «^» и последующий символ, например, b'^C'. Печатаемые символы возвращаются без изменений.

curses.ungetch(ch)

Возвращает ch в очередь ввода, поэтому следующий вызов getch() вернёт его.

Примечание

Перед вызовом getch() можно вернуть только один символ ch.

curses.update_lines_cols()

Обновляет LINES и COLS. Полезно для обнаружения ручного изменения размера экрана.

Добавлена в версии 3.5.

curses.unget_wch(ch)

Возвращает ch в очередь ввода, поэтому следующий вызов get_wch() вернёт его.

Примечание

Перед вызовом get_wch() можно вернуть только один символ ch.

Добавлена в версии 3.3.

curses.ungetmouse(id, x, y, z, bstate)

Возвращает событие KEY_MOUSE в очередь ввода, связывая с ним предоставленные данные состояния.

curses.use_env(flag)

Если используется, эта функция должна вызываться перед вызовом initscr() или newterm. При flag False, значения строк и столбцов, указанные в базе данных terminfo, будут использоваться, даже если переменные среды LINES и COLUMNS (используемые по умолчанию) установлены, или если curses работает в окне (в этом случае по умолчанию используется размер окна, если LINES и COLUMNS не установлены).

curses.use_default_colors()

Разрешает использование значений по умолчанию для цветов на терминалах, поддерживающих эту функцию. Используйте для поддержки прозрачности в приложении. Цвет по умолчанию присваивается номеру цвета -1. После вызова этой функции, init_pair(x, curses.COLOR_RED, -1) инициализирует, например, цветовую пару x с красным цветом переднего плана на фоновом цвете по умолчанию.

curses.wrapper(func, ...)

Инициализирует curses и вызывает другой вызываемый объект func, который должен быть остальной частью вашего приложения curses. Если приложение вызывает исключение, эта функция восстановит терминал в нормальное состояние перед повторным вызовом исключения и созданием трассировки. Вызываемый объект func получает главное окно «stdscr» в качестве первого аргумента, а затем любые другие аргументы, переданные в wrapper(). Перед вызовом func, wrapper() включает режим cbreak, отключает отображение ввода, включает функциональную клавиатуру терминала и инициализирует цвета, если терминал поддерживает цвет. При выходе (нормальном или по исключению) он восстанавливает режим cooked, включает отображение ввода и отключает функциональную клавиатуру терминала.

Объекты окна

Объекты окна, возвращаемые функциями initscr() и newwin() выше, имеют следующие методы и атрибуты:

window.addch(ch[, attr])
window.addch(y, x, ch[, attr])

Отображает символ ch в позиции (y, x) с атрибутами attr, перезаписывая любой ранее нарисованный символ в этой позиции. По умолчанию, позиция символа и атрибуты — текущие настройки для объекта окна.

Примечание

Запись за пределами окна, подокна или области вывода вызывает ошибку curses.error. Попытка записи в нижний правый угол окна, подокна или области вывода вызовет исключение после вывода символа.

window.addnstr(str, n[, attr])
window.addnstr(y, x, str, n[, attr])

Отображает не более n символов из строки str в позиции (y, x) с атрибутами attr, перезаписывая все ранее отображенное.

window.addstr(str[, attr])
window.addstr(y, x, str[, attr])

Отображает строку str в позиции (y, x) с атрибутами attr, перезаписывая все ранее отображенное.

Примечание

  • Запись за пределами окна, подокна или области вывода вызывает ошибку curses.error. Попытка записи в нижний правый угол окна, подокна или области вывода вызовет исключение после вывода строки.
  • Ошибка в ncurses, бэкенде этого модуля Python, может вызвать SegFaults при изменении размеров окон. Эта проблема исправлена в ncurses-6.1-20190511. Если вы используете более раннюю версию ncurses, можно избежать этой ошибки, если не вызывать addstr() со строкой str, содержащей встроенные символы новой строки. Вместо этого вызывайте addstr() отдельно для каждой строки.
window.attroff(attr)

Убирает атрибут attr из набора «фоновых» атрибутов, применяемых ко всем записям в текущем окне.

window.attron(attr)

Добавляет атрибут attr к набору «фоновых» атрибутов, применяемых ко всем записям в текущем окне.

window.attrset(attr)

Устанавливает набор атрибутов «фонового» цвета на attr. Изначально этот набор 0 (без атрибутов).

window.bkgd(ch[, attr])

Устанавливает фоновый цвет окна на символ ch с атрибутами attr. Изменение применяется ко всем позициям символов в этом окне:

  • Атрибут каждого символа в окне меняется на новый фоновый атрибут.
  • Символ предыдущего фонового цвета меняется на новый символ фонового цвета.
window.bkgdset(ch[, attr])

Устанавливает фоновый цвет окна. Фоновый цвет окна состоит из символа и комбинации атрибутов. Часть атрибута фонового цвета комбинируется (или-вается) со всеми непустыми символами, которые записываются в окно. Обе части фонового цвета — символ и атрибуты — комбинируются с пустыми символами. Фоновый цвет становится свойством символа и перемещается с символом при прокрутке и операциях вставки/удаления строк/символов.

window.border([ls[, rs[, ts[, bs[, tl[, tr[, bl[, br]]]]]]]])

Рисует рамку вокруг границ окна. Каждый параметр определяет символ, используемый для определенной части рамки; подробности смотрите в таблице ниже.

Примечание

Значение 0 для любого параметра приведет к использованию символа по умолчанию. Использование ключевых параметров невозможно. Значения по умолчанию приведены в этой таблице:

Параметр

Описание

Значение по умолчанию

ls

Левая сторона

ACS_VLINE

rs

Правая сторона

ACS_VLINE

ts

Верхняя часть

ACS_HLINE

bs

Нижняя часть

ACS_HLINE

tl

Левый верхний угол

ACS_ULCORNER

tr

Правый верхний угол

ACS_URCORNER

bl

Левый нижний угол

ACS_LLCORNER

br

Правый нижний угол

ACS_LRCORNER

window.box([vertch, horch])

Аналогично border(), но и ls, и rs — vertch, и ts, и bs — horch. Символы углов по умолчанию всегда используются в этой функции.

window.chgat(attr)
window.chgat(num, attr)
window.chgat(y, x, attr)
window.chgat(y, x, num, attr)

Устанавливает атрибуты num символов в текущей позиции курсора или в позиции (y, x) (если указана). Если num не задано или равно -1, атрибут будет установлен для всех символов до конца строки. Функция перемещает курсор в позицию (y, x) (если указана). Измененная строка будет отмечена с помощью метода touchline(), чтобы содержимое было перерисовано при следующем обновлении окна.

window.clear()

Аналогично erase(), но также заставляет все окно перерисоваться при следующем вызове refresh().

window.clearok(flag)

Если flag равно True, при следующем вызове refresh() окно будет полностью очищено.

window.clrtobot()

Очищает область от курсора до конца окна: все строки ниже курсора удаляются, затем выполняется операция, эквивалентная clrtoeol().

window.clrtoeol()

Очищает область от курсора до конца строки.

window.cursyncup()

Обновляет текущую позицию курсора всех предков окна, чтобы отразить текущую позицию курсора окна.

window.delch([y, x])

Удаляет символ в позиции (y, x).

window.deleteln()

Удаляет строку под курсором. Все последующие строки сдвигаются вверх на одну строку.

window.derwin(begin_y, begin_x)
window.derwin(nlines, ncols, begin_y, begin_x)

Сокращение от «derive window», derwin() то же самое, что и вызов subwin(), за исключением того, что begin_y и begin_x относятся к началу окна, а не всего экрана. Возвращает объект окна для созданного подокна.

window.echochar(ch[, attr])

Добавляет символ ch с атрибутами attr и немедленно вызывает refresh() для окна.

window.enclose(y, x)

Проверяет, находятся ли заданные координаты ячейки символа относительно экрана внутри данного окна, возвращая True или False. Полезно для определения подмножества окон, которые включают положение события мыши.

window.encoding

Кодировка, используемая для кодирования аргументов метода (строки и символы Unicode). Атрибут кодировки наследуется от родительского окна при создании подокна, например, с помощью window.subwin(). По умолчанию используется кодировка локали (см. locale.getpreferredencoding()).

Добавлена в версии 3.3.

window.erase()

Очищает окно.

window.getbegyx()

Возвращает кортеж (y, x) координат левого верхнего угла.

window.getbkgd()

Возвращает текущую пару символа/атрибута фонового цвета данного окна.

window.getch([y, x])

Получить символ. Обратите внимание, что возвращаемое целое число не обязательно должно находиться в диапазоне ASCII: клавиши функций, клавиши набора и т. д. представлены числами, большими 255. В режиме без задержки вернуть -1 , если вход отсутствует, иначе подождать, пока не будет нажата клавиша.

window.get_wch([y, x])

Получить широкий символ. Вернуть символ для большинства клавиш или целое число для клавиш функций, клавиш набора и других специальных клавиш. В режиме без задержки поднять исключение, если вход отсутствует.

Новая версия 3.3.

window.getkey([y, x])

Получить символ, возвращая строку вместо целого числа, как делает getch(). Клавиши функций, клавиши набора и другие специальные клавиши возвращают многобайтовую строку, содержащую имя клавиши. В режиме без задержки поднять исключение, если вход отсутствует.

window.getmaxyx()

Возвратить кортеж (y, x) высоты и ширины окна.

window.getparyx()

Возвратить начальные координаты этого окна относительно его родительского окна в виде кортежа (y, x). Вернуть (-1, -1) , если у этого окна нет родителя.

window.getstr()
window.getstr(n)
window.getstr(y, x)
window.getstr(y, x, n)

Считать байтовый объект от пользователя с примитивными возможностями редактирования строки.

window.getyx()

Возвратить кортеж (y, x) текущей позиции курсора относительно верхнего левого угла окна.

window.hline(ch, n)
window.hline(y, x, ch, n)

Отобразить горизонтальную линию, начинающуюся с (y, x) длиной n, состоящую из символа ch.

window.idcok(flag)

Если flag — False, curses больше не учитывает использование аппаратного средства вставки/удаления символа терминала; если flag — True, использование вставки и удаления символов включено. При первой инициализации curses использование вставки/удаления символов включено по умолчанию.

window.idlok(flag)

Если flag — True, curses будет пытаться использовать аппаратные средства редактирования строк. В противном случае вставка/удаление строк отключены.

window.immedok(flag)

Если flag — True, любое изменение изображения окна автоматически приводит к обновлению окна; вам больше не нужно вызывать refresh() самостоятельно. Однако это может значительно снизить производительность из-за многократных вызовов wrefresh. Этот параметр отключён по умолчанию.

window.inch([y, x])

Возвращает символ в заданной позиции в окне. Нижние 8 бит — собственно символ, а старшие биты — атрибуты.

window.insch(ch[, attr])
window.insch(y, x, ch[, attr])

Отобразить символ ch в (y, x) с атрибутами attr, сдвигая строку из позиции x вправо на один символ.

window.insdelln(nlines)

Вставить nlines строк в указанное окно над текущей строкой. Последние nlines строк теряются. Для отрицательных nlines удалить nlines строк, начиная с той, что находится под курсором, и переместить оставшиеся строки вверх. Последние nlines строк очищаются. Текущая позиция курсора остается неизменной.

window.insertln()

Вставить пустую строку под курсором. Все последующие строки сдвигаются вниз на одну строку.

window.insnstr(str, n[, attr])
window.insnstr(y, x, str, n[, attr])

Вставить строку символов (столько символов, сколько поместится в строке) перед символом под курсором, до n символов. Если n равно нулю или отрицательно, вставляется вся строка. Все символы справа от курсора смещаются вправо, а самые правые символы в строке теряются. Позиция курсора не изменяется (после перемещения в y, x, если указано).

window.insstr(str[, attr])
window.insstr(y, x, str[, attr])

Вставить строку символов (столько символов, сколько поместится в строке) перед символом под курсором. Все символы справа от курсора смещаются вправо, а самые правые символы в строке теряются. Позиция курсора не изменяется (после перемещения в y, x, если указано).

window.instr([n])
window.instr(y, x[, n])

Возвратить байтовый объект символов, извлеченных из окна, начиная с текущей позиции курсора или с y, x, если указано. Атрибуты удаляются из символов. Если указано n, instr() возвращает строку длиной не более n символов (исключая заключительный NUL).

window.is_linetouched(line)

Возвращает True, если указанная строка была изменена после последнего вызова refresh(); в противном случае возвращает False. Поднять исключение curses.error, если line не является допустимым для данного окна.

window.is_wintouched()

Возвращает True, если указанное окно было изменено после последнего вызова refresh(); в противном случае возвращает False.

window.keypad(flag)

Если flag — True, последовательности escape, созданные некоторыми клавишами (клавиши набора, клавиши функций), будут интерпретироваться curses. Если flag — False, последовательности escape будут оставлены такими, какие они есть, в потоке ввода.

window.leaveok(flag)

Если flag — True, курсор остается на месте при обновлении вместо того, чтобы быть в «позиции курсора». Это сводит к минимуму перемещение курсора при возможности. Если возможно, курсор будет сделан невидимым. Если flag — False, курсор всегда будет в «позиции курсора» после обновления.

window.move(new_y, new_x)

Переместить курсор в (new_y, new_x).

window.mvderwin(y, x)

Переместить окно внутри его родительского окна. Экранные относительные параметры окна не изменяются. Эта функция используется для отображения различных частей родительского окна в одном и том же физическом положении на экране.

window.mvwin(new_y, new_x)

Переместить окно так, чтобы его верхний левый угол находился в (new_y, new_x).

window.nodelay(flag)

Если flag — True, getch() будет неблокирующим.

window.notimeout(flag)

Если flag — True, последовательности escape не будут ограничены по времени. Если flag — False, после нескольких миллисекунд последовательность escape не будет интерпретироваться и останется в потоке ввода как есть.

window.noutrefresh()

Пометить для обновления, но подождать. Эта функция обновляет структуру данных, представляющую желаемое состояние окна, но не принудительно обновляет физический экран. Для этого вызовите doupdate().

window.overlay(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol])

Наложить окно поверх destwin. Окна могут быть разного размера, копируется только перекрывающаяся область. Эта копия не разрушительная, что означает, что текущий символ фона не перезаписывает старое содержимое destwin. Для получения тонкого управления копируемой областью можно использовать вторую форму overlay(). sminrow и smincol — координаты верхнего левого угла исходного окна, а другие переменные обозначают прямоугольник в окне назначения.

window.overwrite(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol])

Перезаписать окно поверх destwin. Окна могут быть разного размера, в этом случае копируется только перекрывающаяся область. Эта копия разрушительная, что означает, что текущий символ фона перезаписывает старое содержимое destwin. Для получения тонкого управления копируемой областью можно использовать вторую форму overwrite(). sminrow и smincol — координаты верхнего левого угла исходного окна, а другие переменные обозначают прямоугольник в окне назначения.

window.putwin(file)

Записать все данные, связанные с окном, в предоставленный объект файла. Эту информацию можно позже извлечь с помощью функции getwin().

window.redrawln(beg, num)

Указать, что num строк экрана, начиная со строки beg, повреждены и должны быть полностью перерисованы при следующем вызове refresh().

window.redrawwin()

Обработать всё окно, вызвав его полную перерисовку при следующем вызове refresh().

window.refresh([pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol])

Немедленно обновить дисплей (синхронизировать фактический экран с предыдущими методами рисования/удаления).

6 необязательных аргументов могут быть указаны только тогда, когда окно является областью, созданной с помощью newpad(). Дополнительные параметры необходимы для указания какой части области и экрана участвуют. pminrow и pmincol указывают верхний левый угол прямоугольника, который должен быть отображен в области. sminrow, smincol, smaxrow и smaxcol указывают края прямоугольника, который должен быть отображен на экране. Нижний правый угол прямоугольника, который должен быть отображен в области, вычисляется из координат экрана, так как прямоугольники должны быть одинакового размера. Оба прямоугольника должны быть полностью содержаться внутри своих соответствующих структур. Отрицательные значения pminrow, pmincol, sminrow или smincol обрабатываются так, как если бы они были равны нулю.

window.resize(nlines, ncols)

Перевыделить память для окна curses, чтобы изменить его размеры на указанные значения. Если размерность больше текущих значений, данные окна заполняются пробелами, в которые включено текущее отображение фона (как установлено с помощью bkgdset()).

window.scroll([lines=1])

Прокрутить экран или область прокрутки вверх на lines строк.

window.scrollok(flag)

Управляет тем, что происходит, когда курсор окна перемещается за пределы окна или области прокрутки, либо в результате действия новой строки в нижней строке, либо набора последнего символа последней строки. Если flag равен False, курсор остается в нижней строке. Если flag равен True, окно прокручивается вверх на одну строку. Обратите внимание, что для получения физического эффекта прокрутки на терминале также необходимо вызвать idlok().

window.setscrreg(top, bottom)

Установить область прокрутки от строки top до строки bottom. Все действия прокрутки будут выполняться в этой области.

window.standend()

Выключить выделенный атрибут. На некоторых терминалах это приводит к отключению всех атрибутов.

window.standout()

Включить атрибут A_STANDOUT.

window.subpad(begin_y, begin_x)
window.subpad(nlines, ncols, begin_y, begin_x)

Возвращает подокно, верхний левый угол которого находится в (begin_y, begin_x), а ширина/высота которого равна ncols/nlines.

window.subwin(begin_y, begin_x)
window.subwin(nlines, ncols, begin_y, begin_x)

Возвращает подокно, верхний левый угол которого находится в (begin_y, begin_x), а ширина/высота которого равна ncols/nlines.

По умолчанию подокно будет простираться от указанной позиции до нижнего правого угла окна.

window.syncdown()

Обработать каждый элемент в окне, который был обработан в любом из его родительских окон. Эта процедура вызывается функцией refresh(), поэтому её вряд ли нужно вызывать вручную.

window.syncok(flag)

Если flag равен True, то syncup() вызывается автоматически всякий раз, когда происходит изменение в окне.

window.syncup()

Обработать все элементы в родительских окнах, которые были изменены в текущем окне.

window.timeout(delay)

Установить поведение чтения с блокировкой или без блокировки для окна. Если delay отрицательно, используется блокирующее чтение (которое будет ожидать бесконечно ввода). Если delay равно нулю, используется неблокирующее чтение, и getch() вернёт -1, если ввод не ожидается. Если delay положительно, то getch() будет блокироваться на delay миллисекунд и возвратит -1, если ввод всё ещё не ожидается по окончании этого времени.

window.touchline(start, count[, changed])

Предполагается, что count строк были изменены, начиная со строки start. Если changed задано, оно указывает, помечены ли затронутые строки как изменённые (changed=True) или неизменённые (changed=False).

window.touchwin()

Предполагается, что всё окно было изменено, для целей оптимизации рисования.

window.untouchwin()

Пометить все строки в окне как неизменённые с момента последнего вызова refresh().

window.vline(ch, n)
window.vline(y, x, ch, n)

Отобразить вертикальную линию, начинающуюся в (y, x), длиной n, состоящую из символа ch.

Константы

Модуль curses определяет следующие данные члены:

curses.ERR

Некоторые функции curses, возвращающие целое число, такие как getch(), возвращают ERR при ошибке.

curses.OK

Некоторые функции curses, возвращающие целое число, такие как napms(), возвращают OK при успешном выполнении.

curses.version

Объект типа bytes, представляющий текущую версию модуля. Также доступен как __version__.

curses.ncurses_version

Именованная кортеж, содержащая три компонента версии библиотеки ncurses: major, minor и patch. Все значения являются целыми числами. К компонентам также можно обратиться по имени, поэтому curses.ncurses_version[0] эквивалентно curses.ncurses_version.major и так далее.

Доступность: если используется библиотека ncurses.

Новое в версии 3.8.

Некоторые константы доступны для указания атрибутов ячеек символов. Точные доступные константы зависят от системы.

Атрибут

Значение

A_ALTCHARSET

Режим альтернативного набора символов

A_BLINK

Режим мигания

A_BOLD

Режим полужирного шрифта

A_DIM

Режим приглушенного текста

A_INVIS

Режим невидимости или пустого текста

A_ITALIC

Режим курсива

A_NORMAL

Нормальный атрибут

A_PROTECT

Режим защиты

A_REVERSE

Режим инверсии цветов фона и переднего плана

A_STANDOUT

Режим выделения

A_UNDERLINE

Режим подчеркивания

A_HORIZONTAL

Выделение по горизонтали

A_LEFT

Выделение слева

A_LOW

Выделение снизу

A_RIGHT

Выделение справа

A_TOP

Выделение сверху

A_VERTICAL

Выделение по вертикали

A_CHARTEXT

Маска битов для извлечения символа

Новое в версии 3.7: A_ITALIC было добавлено.

Несколько констант доступны для извлечения соответствующих атрибутов, возвращаемых некоторыми методами.

Маска битов

Значение

A_ATTRIBUTES

Маска битов для извлечения атрибутов

A_CHARTEXT

Маска битов для извлечения символа

A_COLOR

Маска битов для извлечения информации о паре цветов

Кнопки обозначаются целочисленными константами с именами, начинающимися с KEY_. Точные доступные клавиши зависят от системы.

Ключевой констант

Ключ

KEY_MIN

Минимальное значение ключа

KEY_BREAK

Ключ разрыва (ненадёжный)

KEY_DOWN

Стрелка вниз

KEY_UP

Стрелка вверх

KEY_LEFT

Стрелка влево

KEY_RIGHT

Стрелка вправо

KEY_HOME

Ключ «Начало» (стрелка вверх+влево)

KEY_BACKSPACE

«Удалить» (ненадёжный)

KEY_F0

Клавиши функций. Поддерживается до 64 клавиш функций.

KEY_Fn

Значение клавиши функции n

KEY_DL

Удалить строку

KEY_IL

Вставить строку

KEY_DC

Удалить символ

KEY_IC

Вставить символ или войти в режим вставки

KEY_EIC

Выход из режима вставки символа

KEY_CLEAR

Очистить экран

KEY_EOS

Очистить до конца экрана

KEY_EOL

Очистить до конца строки

KEY_SF

Прокрутить на 1 строку вперёд

KEY_SR

Прокрутить на 1 строку назад (обратная прокрутка)

KEY_NPAGE

Следующая страница

KEY_PPAGE

Предыдущая страница

KEY_STAB

Установить вкладку

KEY_CTAB

Очистить вкладку

KEY_CATAB

Очистить все вкладки

KEY_ENTER

Ввод или отправка (ненадёжный)

KEY_SRESET

Мягкий (частичный) сброс (ненадёжный)

KEY_RESET

Сброс или жёсткий сброс (ненадёжный)

KEY_PRINT

Печать

KEY_LL

Начало вниз или низ (нижний левый)

KEY_A1

Верхний левый квадрат клавиатуры

KEY_A3

Верхний правый квадрат клавиатуры

KEY_B2

Центр клавиатуры

KEY_C1

Нижний левый квадрат клавиатуры

KEY_C3

Нижний правый квадрат клавиатуры

KEY_BTAB

Возврат вкладки

KEY_BEG

Начало (начало)

KEY_CANCEL

Отмена

KEY_CLOSE

Закрыть

KEY_COMMAND

Команда (команда)

KEY_COPY

Копировать

KEY_CREATE

Создать

KEY_END

Конец

KEY_EXIT

Выход

KEY_FIND

Найти

KEY_HELP

Справка

KEY_MARK

Отметить

KEY_MESSAGE

Сообщение

KEY_MOVE

Переместить

KEY_NEXT

Следующий

KEY_OPEN

Открыть

KEY_OPTIONS

Параметры

KEY_PREVIOUS

Пред (предыдущий)

KEY_REDO

Повторить

KEY_REFERENCE

Ссылка (ссылка)

KEY_REFRESH

Обновить

KEY_REPLACE

Заменить

KEY_RESTART

Перезапустить

KEY_RESUME

Продолжить

KEY_SAVE

Сохранить

KEY_SBEG

Сдвинутое Начало (начало)

KEY_SCANCEL

Сдвинутая Отмена

KEY_SCOMMAND

Сдвинутая Команда

KEY_SCOPY

Сдвинутая Копировать

KEY_SCREATE

Сдвинутая Создать

KEY_SDC

Сдвинутая Удалить символ

KEY_SDL

Сдвинутая Удалить строку

KEY_SELECT

Выбрать

KEY_SEND

Сдвинутый Конец

KEY_SEOL

Сдвинутая Очистить строку

KEY_SEXIT

Сдвинутый Выход

KEY_SFIND

Сдвинутая Найти

KEY_SHELP

Сдвинутая Справка

KEY_SHOME

Сдвинутое Начало

KEY_SIC

Сдвинутый Ввод

KEY_SLEFT

Сдвинутая Стрелка влево

KEY_SMESSAGE

Сдвинутое Сообщение

KEY_SMOVE

Сдвинутая Переместить

KEY_SNEXT

Сдвинутый Следующий

KEY_SOPTIONS

Сдвинутые Параметры

KEY_SPREVIOUS

Сдвинутый Пред

KEY_SPRINT

Сдвинутая Печать

KEY_SREDO

Сдвинутая Повторить

KEY_SREPLACE

Сдвинутая Заменить

KEY_SRIGHT

Сдвинутая Стрелка вправо

KEY_SRSUME

Сдвинутая Продолжить

KEY_SSAVE

Сдвинутая Сохранить

KEY_SSUSPEND

Сдвинутая Приостановить

KEY_SUNDO

Сдвинутая Отменить

KEY_SUSPEND

Приостановить

KEY_UNDO

Отменить

KEY_MOUSE

Произошло событие обработки мыши

KEY_RESIZE

Событие изменения размера терминала

KEY_MAX

Максимальное значение ключа

На VT100 и их программных эмуляциях, таких как эмуляторы X терминала, обычно доступны как минимум четыре клавиши функций (KEY_F1, KEY_F2, KEY_F3, KEY_F4 ), и стрелки сопоставлены с KEY_UP, KEY_DOWN, KEY_LEFT и KEY_RIGHT очевидным образом. Если ваша машина оснащена клавиатурой ПК, можно ожидать стрелки и двенадцать клавиш функций (старые клавиатуры ПК могут иметь только десять клавиш функций); также стандартными являются следующие сопоставления клавиатуры:

Ключ

Константа

Вставка

KEY_IC

Удалить

KEY_DC

Начало

KEY_HOME

Конец

KEY_END

Страница вверх

KEY_PPAGE

Страница вниз

KEY_NPAGE

В следующей таблице перечислены символы из альтернативного набора символов. Они унаследованы от терминала VT100 и, как правило, доступны в программных эмуляциях, таких как терминалы X. Если графический символ недоступен, curses использует грубое приближение символа ASCII.

Примечание

Они доступны только после того, как был вызван initscr().

Код ACS

Значение

ACS_BBSS

альтернативное название для правого верхнего угла

ACS_BLOCK

плотный квадратный блок

ACS_BOARD

доска из квадратов

ACS_BSBS

альтернативное название для горизонтальной линии

ACS_BSSB

альтернативное название для левого верхнего угла

ACS_BSSS

альтернативное название для верхней Т-образной опоры

ACS_BTEE

нижняя Т-образная опора

ACS_BULLET

пуля

ACS_CKBOARD

шахматная доска (штриховка)

ACS_DARROW

стрелка, направленная вниз

ACS_DEGREE

символ градуса

ACS_DIAMOND

ромб

ACS_GEQUAL

больше или равно

ACS_HLINE

горизонтальная линия

ACS_LANTERN

символ фонаря

ACS_LARROW

стрелка влево

ACS_LEQUAL

меньше или равно

ACS_LLCORNER

левый нижний угол

ACS_LRCORNER

правый нижний угол

ACS_LTEE

левая Т-образная опора

ACS_NEQUAL

знак не равно

ACS_PI

буква пи

ACS_PLMINUS

знак плюс-минус

ACS_PLUS

большой знак плюс

ACS_RARROW

стрелка вправо

ACS_RTEE

правая Т-образная опора

ACS_S1

строка сканирования 1

ACS_S3

строка сканирования 3

ACS_S7

строка сканирования 7

ACS_S9

строка сканирования 9

ACS_SBBS

альтернативное название для правого нижнего угла

ACS_SBSB

альтернативное название для вертикальной линии

ACS_SBSS

альтернативное название для правой Т-образной опоры

ACS_SSBB

альтернативное название для левого нижнего угла

ACS_SSBS

альтернативное название для нижней Т-образной опоры

ACS_SSSB

альтернативное название для левой Т-образной опоры

ACS_SSSS

альтернативное название для пересечения или большого плюса

ACS_STERLING

фунт стерлингов

ACS_TTEE

верхняя Т-образная опора

ACS_UARROW

стрелка вверх

ACS_ULCORNER

левый верхний угол

ACS_URCORNER

правый верхний угол

ACS_VLINE

вертикальная линия

В следующей таблице перечислены предопределенные цвета:

Константа

Цвет

COLOR_BLACK

Черный

COLOR_BLUE

Синий

COLOR_CYAN

Сине-зеленый (светло-зеленоватый синий)

COLOR_GREEN

Зеленый

COLOR_MAGENTA

Пурпурно-красный (пурпурный красный)

COLOR_RED

Красный

COLOR_WHITE

Белый

COLOR_YELLOW

Желтый

© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.8/library/curses.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API