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

Исходный код: Lib/curses


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

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

Примечание

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

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

См.также

Модуль curses.ascii

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

Модуль curses.panel

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

Модуль curses.textpad

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

Проклинает программирование на Python

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

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

Функции

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

exception curses.error

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

Примечание

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

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

curses.baudrate()

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

curses.beep()

Издайте короткий звук, привлекающий внимание.

curses.can_change_color()

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

curses.cbreak()

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

curses.color_content(color_number)

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

curses.color_pair(pair_number)

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

curses.curs_set(visibility)

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

curses.def_prog_mode()

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

curses.def_shell_mode()

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

curses.delay_output(ms)

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

curses.doupdate()

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

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

curses.echo()

Войдите в режим echo. В режиме 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 до 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(). Затем программа создает и инициализирует новое окно, используя эти данные, возвращая объект new window.

curses.has_colors()

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

curses.has_extended_color_support()

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

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

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

curses.has_ic()

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

curses.has_il()

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

curses.has_key(ch)

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

curses.halfdelay(tenths)

Используется для режима половинной задержки, который аналогичен режиму cbreak в том смысле, что символы, введенные пользователем, сразу же доступны программе. Однако, после блокировки на десятые доли десятых секунд, возникает исключение, если ничего не было введено. Значение десятых долей должно быть числом от 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-символ, является символом ключа. Название комбинации управляющих клавиш представляет собой двухбайтовый объект bytes, состоящий из символа курсора (b'^'), за которым следует соответствующий печатаемый символ ASCII. Название комбинации клавиш alt (128-255) представляет собой объект размером в байт, состоящий из префикса 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)

Спящий режим в течение мс миллисекунд.

curses.newpad(nlines, ncols)

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

Панель управления похожа на окно, за исключением того, что она не ограничена размером экрана и не обязательно связана с определенной частью экрана. Панели управления можно использовать, когда требуется большое окно, а на экране одновременно будет отображаться только часть окна. Автоматическое обновление пэдов (например, при прокрутке или повторении ввода) не происходит. Методы refresh() и noutrefresh() pad требуют 6 аргументов, чтобы указать отображаемую часть pad и местоположение на экране, которое будет использоваться для отображения. Аргументами являются 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 в новую строку при вводе и преобразует новую строку в return и перевод строки при выводе. Изначально включен режим перевода строки.

curses.nocbreak()

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

curses.noecho()

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

curses.nonl()

Выйдите из режима перевода строки. Отключите перевод return в новую строку при вводе и отключите низкоуровневый перевод новой строки в новую строку/возврат при выводе (но это не меняет поведение 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()

Восстановите терминал в режиме «shell», как это было ранее сохранено с помощью def_shell_mode().

curses.resetty()

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

curses.resize_term(nlines, ncols)

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

curses.resizeterm(nlines, ncols)

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

curses.savetty()

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

curses.get_escdelay()

Извлекает значение, заданное с помощью set_escdelay().

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

curses.set_escdelay(ms)

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

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

curses.get_tabsize()

Извлекает значение, заданное с помощью set_tabsize().

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

curses.set_tabsize(size)

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

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

curses.setsyx(y, x)

Установите курсор виртуального экрана в положение y, x. Если y и x равны -1, то значение leaveok равно True.

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

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

curses.start_color()

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

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

curses.termattrs()

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

curses.termname()

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

curses.tigetflag(capname)

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

curses.tigetnum(capname)

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

curses.tigetstr(capname)

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

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

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

curses.typeahead(fd)

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

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

curses.unctrl(ch)

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

curses.ungetch(ch)

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

Примечание

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

curses.update_lines_cols()

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

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

curses.unget_wch(ch)

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

Примечание

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

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

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

Поместите событие KEY_MOUSE во входную очередь, связав с ним заданные данные состояния.

curses.use_env(flag)

Если эта функция используется, то она должна быть вызвана до вызова initscr() или нового термина. Когда 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, включает клавиатуру терминала и инициализирует цвета, если терминал поддерживает цвета. При выходе (как обычно, так и в виде исключения) он восстанавливает режим приготовления, включает echo и отключает клавиатуру терминала.

Оконные объекты

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

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

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

Примечание

Запись за пределами окна, подокна или клавиатуры приводит к появлению символа 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, может вызывать ошибки сегмента при изменении размера Windows. Это исправлено в 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])

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

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

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

window.bkgdset(ch[, attr])

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

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

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

Примечание

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

Параметр

Описание

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

общий объем

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

ACS_VLINE

рупии

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

ACS_VLINE

тс

Верхний

ACS_HLINE

бс

Дно

ACS_HLINE

tl

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

ACS_ULCORNER

тр

В правом верхнем углу

ACS_URCORNER

бл

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

ACS_LLCORNER

бр

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

ACS_LRCORNER

window.box([vertch, horch])

Аналогично border(), но и ls, и rs являются вершинами, а ts и bs являются вершинами. Эта функция всегда использует угловые символы по умолчанию.

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 для производного окна.

window.echochar(ch[, attr])

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

window.enclose(y, x)

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

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

window.encoding

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

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

window.erase()

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

window.getbegyx()

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

window.getbkgd()

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

window.getch([y, x])

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

window.get_wch([y, x])

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

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

window.getkey([y, x])

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

window.getmaxyx()

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

window.getparyx()

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

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

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

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() самостоятельно. Однако это может значительно снизить производительность из-за повторных вызовов обновления. По умолчанию эта опция отключена.

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

Возвращает объект символов bytes, извлеченный из окна, начиная с текущей позиции курсора или с 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. Если flag равен False, управляющие последовательности будут оставлены как есть во входном потоке.

window.leaveok(flag)

Если значение 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)

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

window.notimeout(flag)

Если flag равен True, время ожидания escape-последовательностей не истечет.

Если 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])

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

window.scrollok(flag)

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

window.setscrreg(top, bottom)

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

window.standend()

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

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 отрицательное, используется режим блокирующего чтения (который будет бесконечно долго ожидать ввода). Если задержка равна нулю, то используется неблокирующее чтение, и getch() возвращает -1, если входные данные не ожидаются. Если значение delay положительное, то getch() блокируется на delay миллисекунды и возвращает -1, если по истечении этого времени все еще нет входных данных.

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

Представьте, что строки count были изменены, начиная со строки start. Если указано значение изменено, это указывает, будут ли затронутые строки помечены как измененные (изменено=True) или без изменений (изменено=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__

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

curses.ncurses_version

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

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

Добавлено в версии 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

Вертикальная подсветка

Добавлено в версии 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

Обратное пространство (ненадежное)

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

Просить (начало)

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

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

curses.KEY_REDO

Переделывать

curses.KEY_REFERENCE

Ref (ссылка)

curses.KEY_REFRESH

Освежить

curses.KEY_REPLACE

Заменять

curses.KEY_RESTART

Перезапуск

curses.KEY_RESUME

Возобновиться

curses.KEY_SAVE

Сохранить

curses.KEY_SBEG

Смещенный бег (начало)

curses.KEY_SCANCEL

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

curses.KEY_SCOMMAND

Измененная команда

curses.KEY_SCOPY

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

curses.KEY_SCREATE

Смещенное создание

curses.KEY_SDC

Смещенный символ удаления

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 terminal, обычно доступны по крайней мере четыре функциональные клавиши (KEY_F1, KEY_F2, KEY_F3, KEY_F4), а клавиши со стрелками отображаются на KEY_UP, KEY_DOWN, KEY_LEFT и KEY_RIGHT очевидным образом. Если на вашем компьютере установлена клавиатура ПК, то можно с уверенностью ожидать наличия клавиш со стрелками и двенадцати функциональных клавиш (на старых клавиатурах ПК может быть только десять функциональных клавиш); кроме того, стандартными являются следующие сочетания клавиш:

Колпачок для ключей

Постоянный

Insert

КЛЮЧ_IC

Delete

КЛЮЧ_DC

Home

КЛЮЧ_ДОМ

End

ОТПРАВКА КЛЮЧА

Page Up

КЛЮЧЕВАЯ СТРАНИЦА

Page Down

КЛЮЧЕВАЯ СТРАНИЦА

В следующей таблице перечислены символы из альтернативного набора символов. Они унаследованы от терминала 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

При изменении состояния кнопки 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)

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

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

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

class curses.textpad.Textbox(win)

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

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

edit([validator])

Это точка входа, которую вы обычно используете. Она принимает нажатия клавиш редактирования до тех пор, пока не будет введено одно из завершающих нажатий. Если указан validator, это должна быть функция. Он будет вызываться для каждого нажатия клавиши, введенного с помощью параметра keystroke; отправка команды выполняется на основе результата. Этот метод возвращает содержимое окна в виде строки; наличие пробелов в окне зависит от атрибута 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

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

Вернуться на верх