Spec-Zone.ru › Python 3.9

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 содержатся примеры программ с использованием привязок 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.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. Когда flag False, значения строк и столбцов, указанные в базе данных terminfo, будут использоваться, даже если переменные среды LINES и COLUMNS (используемые по умолчанию) установлены или если curses работает в окне (в этом случае по умолчанию используется размер окна, если LINES и COLUMNS не установлены).

curses.use_default_colors()

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

curses.wrapper(func, /, *args, **kwargs)

Инициализирует curses и вызывает другой вызываемый объект, func, который должен содержать остальную часть вашего приложения, использующего curses. Если приложение вызывает исключение, эта функция восстановит терминал в нормальное состояние перед повторной генерацией исключения и выводом отслеживания ошибок. Вызываемый объект func затем получает главное окно ‘stdscr’ в качестве первого аргумента, за которым следуют любые другие аргументы, переданные в wrapper(). Перед вызовом func, wrapper() включает режим cbreak, отключает режим 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_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)

Сокращение от «производное окно», 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()

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

END_OF_DOCUMENT_MARKER
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

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

KEY_BACKSPACE

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

Cmd (команда)

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

Home со сдвигом

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

Home

KEY_HOME

End

KEY_END

Page Up

KEY_PPAGE

Page Down

KEY_NPAGE

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

Примечание

Эти значения доступны только после вызова initscr().

END_OF_DOCUMENT_MARKER

Код 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.9/library/curses.html

Spec-Zone.ru

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