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


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

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

Примечание

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

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

Примечание

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

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, написанный Эндрю Кучлингом и Эриком Реймондом.

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

Функции

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

exception curses.error

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

Примечание

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

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

curses.baudrate()

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

curses.beep()

Излучают короткий звук внимания.

curses.can_change_color()

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

curses.cbreak()

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

curses.color_content(color_number)

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

curses.color_pair(pair_number)

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

curses.curs_set(visibility)

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

curses.def_prog_mode()

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

curses.def_shell_mode()

Сохраните текущий режим терминала как режим «shell», режим, когда запущенная программа не использует curses. (Его аналогом является режим «program», когда программа использует возможности 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 - это значение ID, используемое для различения нескольких устройств, а x, y, z - это координаты события. (z в настоящее время не используется.) bstate - целочисленное значение, биты которого будут установлены для указания типа события, и будет побитовым OR одной или более из следующих констант, где 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)

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

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 тем, что символы, набранные пользователем, немедленно доступны программе. Однако, после блокировки в течение * десятых* десятых долей секунды, вызывается исключение, если ничего не было набрано. Значение tenths должно быть числом между 1 и 255. Используйте nocbreak() для выхода из режима половинной задержки.

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

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

curses.init_pair(pair_number, fg, bg)

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

curses.initscr()

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

Примечание

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

curses.is_term_resized(nlines, ncols)

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

curses.isendwin()

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

curses.keyname(k)

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

curses.killchar()

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

curses.longname()

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

curses.meta(flag)

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

curses.mouseinterval(interval)

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

curses.mousemask(mousemask)

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

curses.napms(ms)

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

curses.newpad(nlines, ncols)

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

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

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

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

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

curses.nl()

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

curses.nocbreak()

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

curses.noecho()

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

curses.nonl()

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

curses.noqiflush()

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

curses.noraw()

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

curses.pair_content(pair_number)

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

curses.pair_number(attr)

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

curses.putp(str)

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

curses.qiflush([flag])

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

curses.raw()

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

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

curses.resizeterm(nlines, ncols)

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

curses.savetty()

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

curses.get_escdelay()

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

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

curses.set_escdelay(ms)

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

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

curses.get_tabsize()

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

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

curses.set_tabsize(size)

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

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

curses.setsyx(y, x)

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

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

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

curses.start_color()

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

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

curses.termattrs()

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

curses.termname()

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

curses.tigetflag(capname)

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

curses.tigetnum(capname)

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

curses.tigetstr(capname)

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

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

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

curses.typeahead(fd)

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

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

curses.unctrl(ch)

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

curses.ungetch(ch)

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

Примечание

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

curses.update_lines_cols()

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

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

curses.unget_wch(ch)

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

Примечание

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

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

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

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

curses.use_env(flag)

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

curses.use_default_colors()

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

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

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

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

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

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

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

Примечание

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

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

Нарисовать не более n символов строки символов str по адресу (y, x) с атрибутами attr, перезаписывая все, что было ранее на экране.

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

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

Примечание

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

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

window.attroff(attr)

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

window.attron(attr)

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

window.attrset(attr)

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

window.bkgd(ch[, attr])

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

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

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

window.bkgdset(ch[, attr])

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

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

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

Примечание

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

Параметр

Описание

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

ls

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

ACS_VLINE

rs

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

ACS_VLINE

ts

Топ

ACS_HLINE

bs

Дно

ACS_HLINE

tl

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

ACS_ULCORNER

tr

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

ACS_URCORNER

bl

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

ACS_LLCORNER

br

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

ACS_LRCORNER

window.box([vertch, horch])

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

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

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

window.clear()

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

window.clearok(flag)

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

window.clrtobot()

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

window.clrtoeol()

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

window.cursyncup()

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

window.delch([y, x])

Удалите любой символ по адресу (y, x).

window.deleteln()

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

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

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

window.echochar(ch[, attr])

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

window.enclose(y, x)

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

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

window.encoding

Кодировка, используемая для кодирования аргументов метода (строк и символов Unicode). Атрибут кодировки наследуется от родительского окна при создании подокна, например, с помощью команды window.subwin(). По умолчанию используется кодировка локали (см. locale.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)

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

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

window.leaveok(flag)

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

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

window.move(new_y, new_x)

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

window.mvderwin(y, x)

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

window.mvwin(new_y, new_x)

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

window.nodelay(flag)

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

window.notimeout(flag)

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

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

window.noutrefresh()

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

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

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

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

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

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

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

window.putwin(file)

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

window.redrawln(beg, num)

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

window.redrawwin()

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

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

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

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

window.resize(nlines, ncols)

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

window.scroll([lines=1])

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

window.scrollok(flag)

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

window.setscrreg(top, bottom)

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

window.standend()

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

window.standout()

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

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

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

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

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

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

window.syncdown()

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

window.syncok(flag)

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

window.syncup()

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

window.timeout(delay)

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

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

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

window.touchwin()

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

window.untouchwin()

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

window.vline(ch, n)
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

Клавиша 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

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

Redo

KEY_REFERENCE

Ref (ссылка)

KEY_REFRESH

Обновить

KEY_REPLACE

Заменить

KEY_RESTART

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

KEY_RESUME

Резюме

KEY_SAVE

Сохранить

KEY_SBEG

Shifted Beg (начало)

KEY_SCANCEL

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

KEY_SCOMMAND

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

KEY_SCOPY

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

KEY_SCREATE

Shifted Create

KEY_SDC

Shifted Delete char

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

Shifted Prev

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

Ключница

Постоянная

Insert

KEY_IC

Delete

KEY_DC

Home

KEY_HOME

End

KEY_END

Page Up

КЛЮЧЕВОЙ_ПЕЙДЖ

Page Down

КЛЮЧЕВОЙ_ПЕЙДЖ

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

Примечание

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

Код АСУ

Значение

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

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

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

class curses.textpad.Textbox(win)

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

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

edit([validator])

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

do_command(ch)

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

Нажатие клавиш

Действие

Control-A

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

Control-B

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

Control-D

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

Control-E

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

Control-F

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

Control-G

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

Control-H

Удалить символ назад.

Control-J

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

Control-K

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

Control-L

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

Control-N

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

Control-O

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

Control-P

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

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

Постоянная

Нажатие клавиш

KEY_LEFT

Control-B

KEY_RIGHT

Control-F

KEY_UP

Control-P

KEY_DOWN

Control-N

KEY_BACKSPACE

Control-h

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

gather()

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

stripspaces

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

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