curses — Отрисовка псевдографического интерфейса в терминале


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

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

Примечание

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

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

Примечание

Начиная с версии 5.4 библиотека ncurses решает, как интерпретировать не ASCII данные с помощью функции nl_langinfo. Это означает, что вы должны вызвать locale.setlocale() в приложении и закодировать Юникод строки, используя одну из доступных кодировок системы. В этом примере используется кодировка системы по умолчанию:

import locale
locale.setlocale(locale.LC_ALL, '')
code = locale.getpreferredencoding()

Затем используйте code в качестве кодировки для вызова str.encode().

См.также

Модуль curses.ascii
Утилиты для работы с символами ASCII независимо от настроек локали.
Модуль curses.panel
Расширение стека панелей, которое добавляет глубину curses окнам.
Модуль curses.textpad
Текстовый виджет редактирования для curses, поддерживающих привязки типа Emacs.
Curses программирование с Python
Учебный материал по использованию curses с Python от Andrew Kuchling и Eric Raymond.

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

Функции

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

exception curses.error

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

Примечание

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

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

curses.baudrate()

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

curses.beep()

Издать короткий звук внимания.

curses.can_change_color()

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

curses.cbreak()

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

curses.color_content(color_number)

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

curses.color_pair(pair_number)

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

curses.curs_set(visibility)

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

curses.def_prog_mode()

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

curses.def_shell_mode()

Сохранить текущий терминальный режим как «shell», когда запущенная программа не использует 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()

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

curses.getmouse()

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

curses.getsyx()

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

curses.getwin(file)

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

curses.has_colors()

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

curses.has_ic()

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

curses.has_il()

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

curses.has_key(ch)

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

curses.halfdelay(tenths)

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

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

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

curses.init_pair(pair_number, fg, bg)

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

curses.initscr()

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

Примечание

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

curses.is_term_resized(nlines, ncols)

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

curses.isendwin()

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

curses.keyname(k)

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

curses.killchar()

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

curses.longname()

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

curses.meta(flag)

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

curses.mouseinterval(interval)

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

curses.mousemask(mousemask)

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

curses.napms(ms)

Спать в течение ms миллисекунд.

curses.newpad(nlines, ncols)

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

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

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

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

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

curses.nl()

Переход в режим newline. Этот режим преобразует клавишу return в новую строку на входе и преобразует новую линию в return и перевод на новую строку на выходе. Режим «newline» первоначально включен.

curses.nocbreak()

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

curses.noecho()

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

curses.nonl()

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

curses.noqiflush()

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

curses.noraw()

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

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

Восстановить терминал в «program» режим, сохраненном ранее 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.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 в виде байтового объекта, усеченного до 14 символов.

curses.tigetflag(capname)

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

curses.tigetnum(capname)

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

curses.tigetstr(capname)

Возвращает значение способности строка, соответствующей terminfo способности, называться capname как байтовый объект. Возвращает 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 выполняет «оптимизацию прорыва линии» путем периодического поиска заголовка при обновлении экрана. Если входные данные найдены и поступают от tty, текущее обновление откладывается до вызова обновления или повторного обновления, что позволяет быстрее реагировать на команды, переданные заранее. Функция позволяет указать другой файловый дескриптор для проверки типа заголовка.

curses.unctrl(ch)

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

curses.ungetch(ch)

Поместить ch, так что следующий getch() вернет его.

Примечание

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

curses.update_lines_cols()

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

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

curses.unget_wch(ch)

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

Примечание

Можно положить только один ch, прежде чем будет вызван get_wch().

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

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

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

curses.use_env(flag)

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

curses.use_default_colors()

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

curses.wrapper(func, ...)

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

Объекты Window

У объектов window, возвращаемые initscr() и newwin(), есть следующие методы и атрибуты:

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

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

Примечание

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

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, перезаписав что-либо ранее на дисплее.

Примечание

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

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

window.attron(attr)

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

window.attrset(attr)

Установить для фонового набора атрибуты attr. Этот набор изначально является 0 (без атрибутов).

window.bkgd(ch[, attr])

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

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

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

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

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

Примечание

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

Параметр Описание Значение по умолчанию
ls Левая сторона ACS_VLINE
rs Правая сторона ACS_VLINE
ts Верх ACS_HLINE
bs Низ ACS_HLINE
tl Левый верхний угол ACS_ULCORNER
tr Верхний правый угол ACS_URCORNER
bl Нижний левый угол ACS_LLCORNER
br Правый нижний угол ACS_LRCORNER
window.box([vertch, horch])

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

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

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

window.clear()

Подобно erase(), но также приводит к перекрашиванию всего окна при следующем вызове refresh().

window.clearok(flag)

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

window.clrtobot()

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

window.clrtoeol()

Стереть от курсора до конца строки.

window.cursyncup()

Обновление текущего положения курсора всех предков окна для отражения текущего положения курсора окна.

window.delch([y, x])

Удалить все символ в (y, x).

window.deleteln()

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

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

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

window.echochar(ch[, attr])

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

window.enclose(y, x)

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

window.encoding

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

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

window.erase()

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

window.getbegyx()

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

window.getbkgd()

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

window.getch([y, x])

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

window.get_wch([y, x])

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

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

window.getkey([y, x])

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

window.getmaxyx()

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

window.getparyx()

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

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

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

window.getyx()

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

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

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

window.idcok(flag)

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

window.idlok(flag)

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

window.immedok(flag)

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

window.inch([y, x])

Вернёт символ в заданной позиции в окне. Нижние 8 бит являются собственным символом, а верхние биты - атрибуты.

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

Нарисовать символ ch в (y, x) с атрибутом attr, перемещая линию от позиции x прямо в одним символ.

window.insdelln(nlines)

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

window.insertln()

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

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

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

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

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

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

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

window.is_linetouched(line)

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

window.is_wintouched()

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

window.keypad(flag)

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

window.leaveok(flag)

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

Если flag содержит False, курсор всегда будет находиться в «положении курсора» после обновления.

window.move(new_y, new_x)

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

window.mvderwin(y, x)

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

window.mvwin(new_y, new_x)

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

window.nodelay(flag)

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

window.notimeout(flag)

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

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

window.noutrefresh()

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

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

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

Чтобы получить более точный контроль над скопированным регионом, может быть использована вторая форма overlay(). sminrow и smincol являются левыми верхними координатами окна источника, а другие переменные обозначают прямоугольник в окне назначения.

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

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

Чтобы получить более точный контроль над скопированным регионом, может быть использована вторая форма overwrite(). sminrow и smincol являются левыми верхними координатами окна источника, а другие переменные обозначают прямоугольник в окне назначения.

window.putwin(file)

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

window.redrawln(beg, num)

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

window.redrawwin()

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

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

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

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

window.resize(nlines, ncols)

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

window.scroll([lines=1])

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

window.scrollok(flag)

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

window.setscrreg(top, bottom)

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

window.standend()

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

window.standout()

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

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

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

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

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

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

window.syncdown()

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

window.syncok(flag)

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

window.syncup()

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

window.timeout(delay)

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

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

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

window.touchwin()

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

window.untouchwin()

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

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

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

Константы

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

curses.ERR

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

curses.OK

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

curses.version

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

curses.ncurses_version

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

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

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

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

Атрибут Значение
A_ALTCHARSET Режим альтернативного набора символов
A_BLINK Режим моргания
A_BOLD Жирный режим
A_DIM Тусклый режим
A_INVIS Невидимый или пустой режим
A_ITALIC Курсивный режим
A_NORMAL Нормальный атрибут
A_PROTECT Защищенный режим
A_REVERSE Обратный фон и цвета переднего плана
A_STANDOUT Режим ожидания
A_UNDERLINE Подчеркнутый режим
A_HORIZONTAL Горизонтальная подсветка
A_LEFT Левая подсветка
A_LOW Нижняя подсветка
A_RIGHT Правая подсветка
A_TOP Верхняя подсветка
A_VERTICAL Вертикальная подсветка
A_CHARTEXT Битовая маска для извлечения символа

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

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

Битовая маска Значение
A_ATTRIBUTES Битовая маска для извлечения атрибутов
A_CHARTEXT Битовая маска для извлечения символа
A_COLOR Битовая маска для извлечения информация о поле цветовой пары

Ключи - целочисленные константы с именами, начинающимися с KEY_. Точнный перечень доступных ключей зависит от системы.

Ключевая константа Ключ
KEY_MIN Минимальное значение ключа
KEY_BREAK Ключевой разрыв (ненадежный)
KEY_DOWN Стрелка вниз
KEY_UP Стрелка вверх
KEY_LEFT Стрелка влево
KEY_RIGHT Стрелка вправо
KEY_HOME Домашняя клавиша (стрелка вверх+влево)
KEY_BACKSPACE Backspace (ненадежно)
KEY_F0 Функциональные клавиши. Поддерживается до 64 функциональных клавиш.
KEY_Fn Значение функциональной клавиши n
KEY_DL Удалить строку
KEY_IL Вставить строку
KEY_DC Удалить символ
KEY_IC Вставить символ или войти в режим вставки
KEY_EIC Выход из режима вставки символа
KEY_CLEAR Чистый экран
KEY_EOS Очистить до конца экрана
KEY_EOL Очистить до конца строки
KEY_SF Прокрутить 1 строку вперед
KEY_SR Прокрутить 1 строку назад (реверс)
KEY_NPAGE Следующая страница
KEY_PPAGE Предыдущая страница
KEY_STAB Установить таб
KEY_CTAB Очистить таб
KEY_CATAB Очистить все табы
KEY_ENTER Ввод или отправить (ненадежно)
KEY_SRESET Мягкий (частичный) сброс (ненадежный)
KEY_RESET Сброс или полный сброс (ненадежно)
KEY_PRINT Печать
KEY_LL Дом снизу или внизу (внизу слева)
KEY_A1 Верхний левый угол клавиатуры
KEY_A3 Верхний правый угол клавиатуры
KEY_B2 Центр клавиатуры
KEY_C1 Нижний левый угол клавиатуры
KEY_C3 Нижний правый угол клавиатуры
KEY_BTAB Вернуть таб
KEY_BEG Бег (начало)
KEY_CANCEL Отмена
KEY_CLOSE Закрыть
KEY_COMMAND Cmd (команда)
KEY_COPY Копировать
KEY_CREATE Создать
KEY_END Конец
KEY_EXIT Выход
KEY_FIND Найти
KEY_HELP Помощь
KEY_MARK Отметка
KEY_MESSAGE Сообщение
KEY_MOVE Переместить
KEY_NEXT Следующий
KEY_OPEN Открыть
KEY_OPTIONS Опции
KEY_PREVIOUS Prev (предыдущий)
KEY_REDO Повторить
KEY_REFERENCE Ref (ссылка)
KEY_REFRESH Обновление
KEY_REPLACE Замена
KEY_RESTART Перезагрузка
KEY_RESUME Итог
KEY_SAVE Сохранить
KEY_SBEG Смещенный Beg (начало)
KEY_SCANCEL Смещенная Отмена
KEY_SCOMMAND Смещенная Команда
KEY_SCOPY Смещенное Копирование
KEY_SCREATE Смещенное Создание
KEY_SDC Смещенное Удаление символа
KEY_SDL Смещенное Удаление линии
KEY_SELECT Выбор
KEY_SEND Смещенный Конец
KEY_SEOL Смещенная Очистка линии
KEY_SEXIT Смещенный Выход
KEY_SFIND Смещенный Поиск
KEY_SHELP Смещенная Помошь
KEY_SHOME Смещенный Дом
KEY_SIC Смещенный Ввод
KEY_SLEFT Смещенная стрелка влево
KEY_SMESSAGE Смещенное Сообщение
KEY_SMOVE Смещенное Перемещение
KEY_SNEXT Смещенное Далее
KEY_SOPTIONS Смещенные Опции
KEY_SPREVIOUS Смещенная Предыдущая
KEY_SPRINT Смещенная Печать
KEY_SREDO Смещенный Повтор
KEY_SREPLACE Смещенная замена
KEY_SRIGHT Сдвинутая стрелка вправо
KEY_SRSUME Смещённая Сводка
KEY_SSAVE Смещённое Сохранение
KEY_SSUSPEND Смещённая Приостановка
KEY_SUNDO Смещённая Отмена
KEY_SUSPEND Приостановить
KEY_UNDO Отменить
KEY_MOUSE Произошло событие мыши
KEY_RESIZE Событие изменения размера терминала
KEY_MAX Максимальное значение ключа

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

Keycap Константа
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 код Значение
ACS_BBSS альтернативное имя для верхнего правого угла
ACS_BLOCK сплошной квадратный блок
ACS_BOARD доска квадратов
ACS_BSBS альтернативное имя для горизонтальной линии
ACS_BSSB альтернативное имя для верхнего левого угла
ACS_BSSS альтернативное название для верхней тройки
ACS_BTEE нижний тройник
ACS_BULLET маркер
ACS_CKBOARD шашечная доска (стиппл)
ACS_DARROW стрелка, указывающая вниз
ACS_DEGREE символ степени
ACS_DIAMOND бриллиант
ACS_GEQUAL больше или равно
ACS_HLINE горизонтальная линия
ACS_LANTERN символ фонаря
ACS_LARROW стрелка влево
ACS_LEQUAL меньше или равно
ACS_LLCORNER нижний левый угол
ACS_LRCORNER нижний правый угол
ACS_LTEE левый тройник
ACS_NEQUAL знак неравенства
ACS_PI буква пи
ACS_PLMINUS знак плюс или минус
ACS_PLUS большой знак плюса
ACS_RARROW правая стрелка
ACS_RTEE правый тройник
ACS_S1 линия сканирования 1
ACS_S3 линия сканирования 3
ACS_S7 линия сканирования 7
ACS_S9 линия сканирования 9
ACS_SBBS альтернативное название для нижнего правого угла
ACS_SBSB альтернативное имя для вертикальной линии
ACS_SBSS альтернативное название для правой тройки
ACS_SSBB альтернативное имя для нижнего левого угла
ACS_SSBS альтернативное название для нижних троек
ACS_SSSB альтернативное название для левого тройника
ACS_SSSS альтернативное название для кроссовера или большого плюса
ACS_STERLING фунт стерлингов
ACS_TTEE верхний тройник
ACS_UARROW стрелка вверх
ACS_ULCORNER левый верхний угол
ACS_URCORNER верхний правый угол
ACS_VLINE вертикальная линия

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

Константа Цвет
COLOR_BLACK Чёрный
COLOR_BLUE Синий
COLOR_CYAN Голубой (светло-зеленовато-голубой)
COLOR_GREEN Зелёный
COLOR_MAGENTA Пурпурный (пурпурно-красный)
COLOR_RED Красный
COLOR_WHITE Белый
COLOR_YELLOW Жёлтый

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 формируемых символов терминала, которые делают это возможным (включая xterm и большинство других эмуляторов программного терминала). В противном случае он будет прорисован штрихами ASCII, вертикальными полосами и знаками плюс.

Объекты Textbox

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

class curses.textpad.Textbox(win)

Возвращает объект виджета текстового поля. Аргумент 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

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