curses — Обработка терминала для отображения символьных ячеек

Источник: Lib/curses


Модуль curses предоставляет интерфейс к библиотеке curses, стандарту де-факто для переносимой расширенной обработки терминалов.

Хотя curses наиболее широко используется в среде Unix, существуют версии для Windows, DOS и, возможно, других систем. Этот модуль расширения разработан для соответствия API ncurses, библиотеки curses с открытым исходным кодом, размещенной в Linux и BSD-версиях Unix.

Availability: не WASI, не iOS.

Этот модуль не работает или недоступен на платформах WebAssembly или iOS. Дополнительные сведения о доступности WASM см. в разделе Платформы WebAssembly; о доступности iOS - в разделе iOS.

Примечание

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

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

См.также

Модуль curses.ascii

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

Модуль curses.panel

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

Модуль curses.textpad

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

Программирование на Curses с помощью Python

Учебный материал по использованию curses с Python, написанный Эндрю Кучлингом и Эриком Рэймондом.

Функции

Модуль 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. (Его аналог - режим «shell», когда программа не использует curses.) Последующие вызовы reset_prog_mode() будут восстанавливать этот режим.

curses.def_shell_mode()

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

curses.delay_output(ms)

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

curses.doupdate()

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

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

curses.echo()

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

curses.endwin()

Деинициализируйте библиотеку и верните терминал в нормальное состояние.

curses.erasechar()

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

curses.filter()

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

curses.flash()

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

curses.flushinp()

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

curses.getmouse()

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

Изменено в версии 3.10: Константы BUTTON5_* теперь открываются, если они предоставляются базовой библиотекой curses.

curses.getsyx()

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

curses.getwin(file)

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

curses.has_colors()

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

curses.has_extended_color_support()

Возвращает True, если модуль поддерживает расширенные цвета; в противном случае возвращает False. Поддержка расширенных цветов позволяет использовать более 256 пар цветов для терминалов, поддерживающих более 16 цветов (например, xterm-256color).

Для расширенной поддержки цветов требуется ncurses версии 6.1 или более поздней.

Added in version 3.10.

curses.has_ic()

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

curses.has_il()

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

curses.has_key(ch)

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

curses.halfdelay(tenths)

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

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

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

curses.init_pair(pair_number, fg, bg)

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

curses.initscr()

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

Примечание

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

curses.is_term_resized(nlines, ncols)

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

curses.isendwin()

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

curses.keyname(k)

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

curses.killchar()

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

curses.longname()

Возвращает объект bytes, содержащий поле terminfo long name, описывающее текущий терминал. Максимальная длина подробного описания составляет 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 с заданным количеством строк и столбцов. Возвращает блокнот в виде объекта окна.

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

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

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

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

curses.nl()

Войдите в режим новой строки. Этот режим преобразует клавишу return в newline на вводе и преобразует newline в return и line-feed на выводе. Изначально режим новой строки включен.

curses.nocbreak()

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

curses.noecho()

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

curses.nonl()

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

curses.noqiflush()

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

curses.noraw()

Выйдите из режима «сырой». Вернитесь в нормальный «приготовленный» режим с буферизацией строки.

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 нормальная буферизация строки и обработка прерывания, выхода, приостановки и клавиш управления потоком отключены; символы подаются на функции ввода curses по одному.

curses.reset_prog_mode()

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

curses.reset_shell_mode()

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

curses.resetty()

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

curses.resize_term(nlines, ncols)

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

curses.resizeterm(nlines, ncols)

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

curses.savetty()

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

curses.get_escdelay()

Извлекает значение, заданное set_escdelay().

Added in version 3.9.

curses.set_escdelay(ms)

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

Added in version 3.9.

curses.get_tabsize()

Извлекает значение, заданное set_tabsize().

Added in version 3.9.

curses.set_tabsize(size)

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

Added in version 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[, ...])

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

curses.typeahead(fd)

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

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

curses.unctrl(ch)

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

curses.ungetch(ch)

Нажмите ch, чтобы следующий getch() вернул его.

Примечание

Только одна ch может быть нажата до вызова getch().

curses.update_lines_cols()

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

Added in version 3.5.

curses.unget_wch(ch)

Нажмите ch, чтобы следующий get_wch() вернул его.

Примечание

Только одна ch может быть нажата до вызова get_wch().

Added in version 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. Попытка записи в правый нижний угол окна, подокна или пэда приведет к тому, что после печати строки будет поднято исключение.

  • Бэкэнд bug in ncurses, используемый для этого модуля Python, может вызывать SegFaults при изменении размеров окон. Это исправлено в ncurses-6.1-20190511. Если вы застряли с более ранней версией ncurses, вы можете избежать этого, если не будете вызывать addstr() с str, содержащим встроенные новые строки. Вместо этого вызывайте addstr() отдельно для каждой строки.

window.attroff(attr)

Удаляет атрибут attr из набора «background», применяемого ко всем записям в текущем окне.

window.attron(attr)

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

window.attrset(attr)

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

window.bkgd(ch[, attr])

Установите свойство фона окна на символ ch, с атрибутами attr. Затем это изменение будет применено к каждой позиции символов в этом окне:

  • Атрибут каждого символа в окне изменяется на новый атрибут фона.

  • Везде, где появляется прежний фоновый персонаж, он сменяется новым фоновым персонажем.

window.bkgdset(ch[, attr])

Установите фон окна. Фон окна состоит из символа и любой комбинации атрибутов. Атрибутная часть фона объединяется (OR’ed) со всеми непустыми символами, которые записаны в окне. И символьная, и атрибутная части фона объединяются с пустыми символами. Фон становится свойством символа и перемещается вместе с ним при любых операциях прокрутки и вставки/удаления строки/символа.

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)

Если флаг равен 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. Это полезно для определения того, какое подмножество окон экрана охватывает местоположение события мыши.

Изменено в версии 3.10: Ранее он возвращал 1 или 0 вместо True или False.

window.encoding

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

Added in version 3.3.

window.erase()

Очистите окно.

window.getbegyx()

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

window.getbkgd()

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

window.getch([y, x])

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

window.get_wch([y, x])

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

Added in version 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)

Если флаг равен 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, если строка недопустима для данного окна.

window.is_wintouched()

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

window.keypad(flag)

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

window.leaveok(flag)

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

Если флаг равен 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)

Если флаг равен True, то getch() будет неблокирующим.

window.notimeout(flag)

Если флаг равен True, экранирующие последовательности не будут прерываться по таймеру.

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

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])

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

window.scrollok(flag)

Управляет тем, что происходит, когда курсор окна перемещается за край окна или области прокрутки, либо в результате действия новой строки в нижней строке, либо при вводе последнего символа последней строки. Если флаг равен False, курсор остается на нижней строке. Если флаг равен 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])

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

window.touchwin()

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

window.untouchwin()

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

window.vline(ch, n[, attr])
window.vline(y, x, ch, n[, attr])

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

Константы

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

curses.ERR

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

curses.OK

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

curses.version
curses.__version__

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

curses.ncurses_version

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

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

Added in version 3.8.

curses.COLORS

Максимальное количество цветов, которое может поддерживать терминал. Определяется только после вызова start_color().

curses.COLOR_PAIRS

Максимальное количество пар цветов, которое может поддерживать терминал. Определяется только после вызова start_color().

curses.COLS

Ширина экрана, т.е. количество столбцов. Определяется только после вызова initscr(). Обновляется с помощью update_lines_cols(), resizeterm() и resize_term().

curses.LINES

Высота экрана, т.е. количество строк. Определяется только после вызова initscr(). Обновляется с помощью update_lines_cols(), resizeterm() и resize_term().

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

Атрибут

Значение

curses.A_ALTCHARSET

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

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

curses.A_BOLD

Жирный режим

curses.A_DIM

Приглушенный режим

curses.A_INVIS

Невидимый или пустой режим

curses.A_ITALIC

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

curses.A_NORMAL

Обычный атрибут

curses.A_PROTECT

Защищенный режим

curses.A_REVERSE

Измените цвета фона и переднего плана

curses.A_STANDOUT

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

curses.A_UNDERLINE

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

curses.A_HORIZONTAL

Горизонтальное выделение

curses.A_LEFT

Левый блик

curses.A_LOW

Низкое освещение

curses.A_RIGHT

Правый блик

curses.A_TOP

Главная изюминка

curses.A_VERTICAL

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

Added in version 3.7: A_ITALIC был добавлен.

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

Битовая маска

Значение

curses.A_ATTRIBUTES

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

curses.A_CHARTEXT

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

curses.A_COLOR

Битовая маска для извлечения информации о поле цветовой пары

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

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

Ключ

curses.KEY_MIN

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

curses.KEY_BREAK

Сломанный ключ (ненадежный)

curses.KEY_DOWN

Стрелка вниз

curses.KEY_UP

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

curses.KEY_LEFT

Левая стрелка

curses.KEY_RIGHT

Правая стрелка

curses.KEY_HOME

Клавиша «Домой» (стрелка вверх+влево)

curses.KEY_BACKSPACE

Backspace (ненадежно)

curses.KEY_F0

Функциональные клавиши. Поддерживается до 64 функциональных клавиш.

curses.KEY_Fn

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

curses.KEY_DL

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

curses.KEY_IL

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

curses.KEY_DC

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

curses.KEY_IC

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

curses.KEY_EIC

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

curses.KEY_CLEAR

Чистый экран

curses.KEY_EOS

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

curses.KEY_EOL

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

curses.KEY_SF

Прокрутите 1 строку вперед

curses.KEY_SR

Прокрутка на 1 строку назад (реверс)

curses.KEY_NPAGE

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

curses.KEY_PPAGE

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

curses.KEY_STAB

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

curses.KEY_CTAB

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

curses.KEY_CATAB

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

curses.KEY_ENTER

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

curses.KEY_SRESET

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

curses.KEY_RESET

Сброс или жесткая перезагрузка (ненадежно)

curses.KEY_PRINT

Печать

curses.KEY_LL

Дом внизу или в нижней части (слева внизу)

curses.KEY_A1

Верхняя левая часть клавиатуры

curses.KEY_A3

Правая верхняя часть клавиатуры

curses.KEY_B2

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

curses.KEY_C1

Нижняя левая часть клавиатуры

curses.KEY_C3

Правая нижняя часть клавиатуры

curses.KEY_BTAB

Задняя вкладка

curses.KEY_BEG

Beg (начало)

curses.KEY_CANCEL

Отмена

curses.KEY_CLOSE

Закрыть

curses.KEY_COMMAND

Cmd (команда)

curses.KEY_COPY

Копировать

curses.KEY_CREATE

Создать

curses.KEY_END

Конец

curses.KEY_EXIT

Выход

curses.KEY_FIND

Найти

curses.KEY_HELP

Помощь

curses.KEY_MARK

Марк

curses.KEY_MESSAGE

Сообщение

curses.KEY_MOVE

Переместить

curses.KEY_NEXT

Следующий

curses.KEY_OPEN

Открыть

curses.KEY_OPTIONS

Опции

curses.KEY_PREVIOUS

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

curses.KEY_REDO

Redo

curses.KEY_REFERENCE

Ref (ссылка)

curses.KEY_REFRESH

Обновить

curses.KEY_REPLACE

Заменить

curses.KEY_RESTART

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

curses.KEY_RESUME

Резюме

curses.KEY_SAVE

Сохранить

curses.KEY_SBEG

Shifted Beg (начало)

curses.KEY_SCANCEL

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

curses.KEY_SCOMMAND

Сдвинутое командование

curses.KEY_SCOPY

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

curses.KEY_SCREATE

Сдвинутое создание

curses.KEY_SDC

Сдвинутый символ Delete

curses.KEY_SDL

Сдвинутая линия удаления

curses.KEY_SELECT

Выберите

curses.KEY_SEND

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

curses.KEY_SEOL

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

curses.KEY_SEXIT

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

curses.KEY_SFIND

Сдвинутый поиск

curses.KEY_SHELP

Сдвинутая помощь

curses.KEY_SHOME

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

curses.KEY_SIC

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

curses.KEY_SLEFT

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

curses.KEY_SMESSAGE

Перемещенное сообщение

curses.KEY_SMOVE

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

curses.KEY_SNEXT

Сдвинутые дальше

curses.KEY_SOPTIONS

Сдвинутые опции

curses.KEY_SPREVIOUS

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

curses.KEY_SPRINT

Сдвинутый принт

curses.KEY_SREDO

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

curses.KEY_SREPLACE

Сменная замена

curses.KEY_SRIGHT

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

curses.KEY_SRSUME

Сменное резюме

curses.KEY_SSAVE

Сдвинутое сохранение

curses.KEY_SSUSPEND

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

curses.KEY_SUNDO

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

curses.KEY_SUSPEND

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

curses.KEY_UNDO

Отменить

curses.KEY_MOUSE

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

curses.KEY_RESIZE

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

curses.KEY_MAX

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

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

Ключница

Постоянно

Insert

KEY_IC

Delete

KEY_DC

Home

KEY_HOME

End

KEY_END

Page Up

KEY_PPAGE

Page Down

KEY_NPAGE

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

Примечание

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

Код ACS

Значение

curses.ACS_BBSS

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

curses.ACS_BLOCK

массивный квадратный блок

curses.ACS_BOARD

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

curses.ACS_BSBS

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

curses.ACS_BSSB

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

curses.ACS_BSSS

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

curses.ACS_BTEE

нижняя футболка

curses.ACS_BULLET

пуля

curses.ACS_CKBOARD

Доска для игры в шашки (стиппл)

curses.ACS_DARROW

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

curses.ACS_DEGREE

знак степени

curses.ACS_DIAMOND

бриллиант

curses.ACS_GEQUAL

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

curses.ACS_HLINE

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

curses.ACS_LANTERN

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

curses.ACS_LARROW

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

curses.ACS_LEQUAL

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

curses.ACS_LLCORNER

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

curses.ACS_LRCORNER

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

curses.ACS_LTEE

левая футболка

curses.ACS_NEQUAL

знак неравенства

curses.ACS_PI

буква пи

curses.ACS_PLMINUS

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

curses.ACS_PLUS

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

curses.ACS_RARROW

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

curses.ACS_RTEE

правая футболка

curses.ACS_S1

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

curses.ACS_S3

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

curses.ACS_S7

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

curses.ACS_S9

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

curses.ACS_SBBS

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

curses.ACS_SBSB

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

curses.ACS_SBSS

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

curses.ACS_SSBB

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

curses.ACS_SSBS

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

curses.ACS_SSSB

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

curses.ACS_SSSS

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

curses.ACS_STERLING

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

curses.ACS_TTEE

верхняя футболка

curses.ACS_UARROW

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

curses.ACS_ULCORNER

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

curses.ACS_URCORNER

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

curses.ACS_VLINE

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

В следующей таблице перечислены константы кнопок мыши, используемые getmouse():

Постоянная кнопка мыши

Значение

curses.BUTTONn_PRESSED

Нажата кнопка мыши n

curses.BUTTONn_RELEASED

Кнопка мыши n отпущена

curses.BUTTONn_CLICKED

Нажата кнопка мыши n

curses.BUTTONn_DOUBLE_CLICKED

Двойное нажатие кнопки мыши n

curses.BUTTONn_TRIPLE_CLICKED

Тройное нажатие кнопки мыши n

curses.BUTTON_SHIFT

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

curses.BUTTON_CTRL

Управление было отключено во время изменения состояния кнопки

curses.BUTTON_ALT

Управление было отключено во время изменения состояния кнопки

Изменено в версии 3.10: Константы BUTTON5_* теперь открываются, если они предоставляются базовой библиотекой curses.

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

Постоянно

Цвет

curses.COLOR_BLACK

Черный

curses.COLOR_BLUE

Голубой

curses.COLOR_CYAN

Циан (светлый зеленовато-голубой)

curses.COLOR_GREEN

Зеленый

curses.COLOR_MAGENTA

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

curses.COLOR_RED

Красный

curses.COLOR_WHITE

Белый

curses.COLOR_YELLOW

Желтый

curses.textpad — Виджет ввода текста для программ на языке curses

Модуль curses.textpad предоставляет класс Textbox, который управляет элементарным редактированием текста в окне curses, поддерживая набор привязок клавиш, напоминающий таковые в Emacs (а значит, и в Netscape Navigator, BBedit 6.x, FrameMaker и многих других программах). Модуль также предоставляет функцию рисования прямоугольников, полезную для обрамления текстовых полей или для других целей.

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

curses.textpad.rectangle(win, uly, ulx, lry, lrx)

Рисует прямоугольник. Первым аргументом должен быть объект окна; остальные аргументы - координаты относительно этого окна. Второй и третий аргументы - это координаты y и x левого верхнего угла рисуемого прямоугольника; четвертый и пятый - координаты y и x правого нижнего угла. Прямоугольник будет нарисован с помощью символов VT100/IBM PC forms на терминалах, которые позволяют это сделать (включая xterm и большинство других программных эмуляторов терминалов). В противном случае он будет нарисован с помощью ASCII-черточек, вертикальных полос и знаков плюс.

Объекты текстового поля

Вы можете создать объект Textbox следующим образом:

class curses.textpad.Textbox(win)

Возвращает объект виджета textbox. Аргумент win должен быть объектом curses window, в котором будет содержаться текстовое поле. Курсор редактирования текстового поля первоначально располагается в левом верхнем углу содержащего окна с координатами (0, 0). Флаг stripspaces экземпляра изначально включен.

Объекты Textbox имеют следующие методы:

edit([validator])

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

do_command(ch)

Обработка одной командной клавиши. Здесь перечислены поддерживаемые специальные нажатия клавиш:

Клавиши

Действие

Control-A

Перейдите к левому краю окна.

Control-B

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

Control-D

Удаление символа под курсором.

Control-E

Перейдите к правому краю (полосы выключены) или к концу строки (полосы включены).

Control-F

Курсор вправо, переходя к следующей строке, когда это необходимо.

Control-G

Завершение работы с возвратом содержимого окна.

Control-H

Удаление символа в обратном направлении.

Control-J

Завершение, если окно состоит из 1 строки, в противном случае вставьте новую строку.

Control-K

Если строка пустая, удалите ее, иначе очистите до конца строки.

Control-L

Обновить экран.

Control-N

Курсор вниз; перемещение на одну строку вниз.

Control-O

Вставьте пустую строку в местоположение курсора.

Control-P

Курсор вверх; перемещение на одну строку вверх.

Операции перемещения ничего не делают, если курсор находится на краю, где перемещение невозможно. По возможности поддерживаются следующие синонимы:

Постоянно

Клавиши

KEY_LEFT

Control-B

KEY_RIGHT

Control-F

KEY_UP

Control-P

KEY_DOWN

Control-N

KEY_BACKSPACE

Control-h

Все остальные нажатия клавиш воспринимаются как команда вставить заданный символ и переместиться вправо (с переворачиванием строки).

gather()

Возвращает содержимое окна в виде строки; на то, будут ли включены пробелы в окне, влияет член stripspaces.

stripspaces

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