Документация Python неофициальный перевод
Содержание страницы

curses – Управление терминалом для символьных дисплеевcurses – Terminal handling for character-cell displays

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


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

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

Доступность: не Android, не iOS, не WASI.

Этот модуль не поддерживается на мобильных платформах или платформах WebAssembly.

Это опциональный модуль. Если его нет в вашей копии CPython, обратитесь к документации от вашего дистрибьютора (то есть того, кто предоставил вам Python). Если вы дистрибьютор, обратитесь к требованиям к опциональным модулям.

Примечание

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

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

См. также

Модуль curses.ascii

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

Модуль curses.panel

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

Модуль curses.textpad

Виджет редактируемого текста для curses с поддержкой привязок, похожих на Emacs.

Программирование с curses в Python

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

ФункцииFunctions

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

exception curses.error

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

Примечание

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

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

curses.assume_default_colors(fg, bg, /)

Разрешает использование значений по умолчанию для цветов на терминалах, поддерживающих эту возможность. Используется для поддержки прозрачности в приложении.

  • Назначает цвета переднего и заднего плана терминала по умолчанию номеру цвета -1. Таким образом, init_pair(x, COLOR_RED, -1) инициализирует пару x как красный на фоне по умолчанию, а init_pair(x, -1, COLOR_BLUE) инициализирует пару x как передний план по умолчанию на синем.

  • Изменяет определение цветовой пары 0 на (fg, bg).

Это расширение ncurses.

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

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. Возвращает кортеж из трёх элементов, содержащий значения 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 (невидимый, нормальный, очень видимый). Если терминал поддерживает запрошенный режим видимости, возвращает предыдущее состояние курсора; в противном случае вызывает исключение. На многих терминалах режим «visible» – это подчёркивающий курсор, а режим «very visible» – блочный курсор.

curses.def_prog_mode()

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

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

curses.filter()

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

curses.flash()

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

curses.flushinp()

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

curses.getmouse()

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

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

curses.getsyx()

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

curses.getwin(file)

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

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)

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

curses.initscr()

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

См. setupterm() о предостережении относительно вызова до этой функции.

Примечание

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

curses.intrflush(flag)

Если flag равен True, нажатие клавиши прерывания (interrupt, break или quit) сбросит весь вывод из очереди драйвера терминала. Если flag равен False, сброс не производится.

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.

Возбуждает ValueError, если k отрицателен.

curses.killchar()

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

curses.longname()

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

curses.meta(flag)

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

curses.mouseinterval(interval)

Устанавливает максимальное время в миллисекундах, которое может пройти между нажатием и отпусканием, чтобы это считалось щелчком, и возвращает предыдущее значение интервала. Значение по умолчанию – 166 миллисекунд, или одна шестая секунды. Используйте отрицательное interval, чтобы получить значение интервала без его изменения.

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)

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

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

curses.nl(flag=True)

Включает режим перевода строки. В этом режиме клавиша возврата каретки преобразуется в перевод строки при вводе, а перевод строки преобразуется в возврат каретки и перевод строки при выводе. Режим перевода строки изначально включен.

Если flag равен False, эффект аналогичен вызову nonl().

curses.nocbreak()

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

curses.noecho()

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

curses.nonl()

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

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() всегда направляется в стандартный вывод.

setupterm() (или initscr()) должна быть вызвана первой.

curses.qiflush([flag])

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

curses.raw()

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

curses.reset_prog_mode()

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

curses.reset_shell_mode()

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

curses.resetty()

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

curses.resize_term(nlines, ncols)

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

curses.resizeterm(nlines, ncols)

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

curses.savetty()

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

curses.get_escdelay()

Возвращает значение, установленное set_escdelay().

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

curses.set_escdelay(ms)

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

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

curses.get_tabsize()

Возвращает значение, установленное set_tabsize().

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

curses.set_tabsize(size)

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

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

curses.setsyx(y, x)

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

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

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

Вызывает curses.error, если терминал не найден или не удалось прочитать его запись\nв базе terminfo. Если терминал уже был\nинициализирован, эта функция не даёт эффекта.

Примечание

Вызов initscr() после setupterm()\nприводит к утечке терминала, выделенного setupterm():\nбиблиотека curses хранит только один текущий терминал\nи не освобождает ранее выделенный.

curses.start_color()

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

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

curses.termattrs()

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

curses.termname()

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

curses.tigetflag(capname)

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

setupterm() (или initscr()) должна быть вызвана первой.

curses.tigetnum(capname)

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

setupterm() (или initscr()) должна быть вызвана первой.

curses.tigetstr(capname)

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

setupterm() (или initscr()) должна быть вызвана первой.

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

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

setupterm() (или initscr()) должна быть вызвана первой.

curses.typeahead(fd)

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

Библиотека curses выполняет «оптимизацию прерывания строки» (line-breakout optimization), периодически проверяя упреждающий ввод\nво время обновления экрана. Если ввод обнаружен и поступает с tty,\nтекущее обновление откладывается до следующего вызова refresh или doupdate,\nчто обеспечивает более быстрый ответ на заранее введённые команды. Эта функция\nпозволяет указать другой файловый дескриптор для проверки упреждающего ввода.

curses.unctrl(ch)

Возвращает объект bytes, который представляет печатное представление символа ch.\nУправляющие символы представляются как «крышка» (^), за которой следует символ, например\nb'^C'. Печатные символы остаются без изменений.

curses.ungetch(ch)

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

Примечание

До вызова getch() можно поместить только один символ ch.

curses.update_lines_cols()

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

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

curses.unget_wch(ch)

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

Примечание

До вызова get_wch() можно поместить только один символ ch.

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

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

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

curses.use_env(flag)

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

curses.use_default_colors()

Эквивалентно assume_default_colors(-1, -1).

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

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

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

class curses.window

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

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

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

Примечание

Запись за пределами окна, подокна или pad'а вызывает исключение curses.error. Попытка записи в правый нижний угол окна, подокна или 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, перезаписывая всё, что ранее было на экране.

Примечание

  • Запись за пределами окна, подокна или pad'а вызывает исключение curses.error. Попытка записи в правый нижний угол окна, подокна или 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)

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

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

window.erase()

Очищает окно.

window.getbegyx()

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

window.getbkgd()

Возвращает текущую пару фонового символа/атрибута указанного окна. Её компоненты можно извлечь так же, как у inch().

window.getch([y, x])

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

window.get_wch([y, x])

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

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

window.getkey([y, x])

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

window.getmaxyx()

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

window.getparyx()

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

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

Считывает объект bytes от пользователя с примитивной возможностью редактирования строки. Считывается не более n символов; n по умолчанию равно 2047 и не может превышать этого значения.

Изменено в версии 3.14: Максимальное значение n увеличено с 1023 до 2047.

window.getyx()

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

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

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

window.idcok(flag)

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

window.idlok(flag)

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

window.immedok(flag)

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

window.inch([y, x])

Возвращает символ в заданной позиции окна. Младшие 8 бит – это сам символ, а старшие биты – атрибуты; выделите их с помощью битовых масок A_CHARTEXT и A_ATTRIBUTES, а цветовую пару – с помощью pair_number().

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

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

window.insdelln(nlines)

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

window.insertln()

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

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

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

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

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

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

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

Изменено в версии 3.14: Максимальное значение n увеличено с 1023 до 2047.

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

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

window.nodelay(flag)

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

window.notimeout(flag)

Если flag равен True, для управляющих последовательностей не будет установлен тайм-аут.

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

window.noutrefresh()
window.noutrefresh(pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol)

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

Шесть аргументов можно указывать (и они становятся обязательными) только в том случае, если окно является панелью, созданной с помощью newpad(); их смысл совпадает с refresh().

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

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

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

window.resize(nlines, ncols)

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

window.scroll([lines=1])

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

window.scrollok(flag)

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

window.setscrreg(top, bottom)

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

window.standend()

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

window.standout()

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

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

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

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[, attr])
window.vline(y, x, ch, n[, attr])

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

КонстантыConstants

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

curses.ERR

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

curses.OK

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

curses.version

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

curses.ncurses_version

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

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

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

curses.COLORS

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

curses.COLOR_PAIRS

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

curses.COLS

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

curses.LINES

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

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

Атрибут

Значение

curses.A_ALTCHARSET

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

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

curses.A_BOLD

Режим жирного шрифта

curses.A_DIM

Режим затемнения

curses.A_INVIS

Режим невидимого или пустого символа

curses.A_ITALIC

Курсивный режим

curses.A_NORMAL

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

curses.A_PROTECT

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

curses.A_REVERSE

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

curses.A_STANDOUT

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

curses.A_UNDERLINE

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

curses.A_HORIZONTAL

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

curses.A_LEFT

Выделение слева

curses.A_LOW

Слабое выделение

curses.A_RIGHT

Выделение справа

curses.A_TOP

Верхнее выделение

curses.A_VERTICAL

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

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

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

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

Значение

curses.A_ATTRIBUTES

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

curses.A_CHARTEXT

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

curses.A_COLOR

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

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

Константа клавиши

Клавиша

curses.KEY_MIN

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

curses.KEY_BREAK

Клавиша Break (ненадёжно)

curses.KEY_DOWN

Стрелка вниз

curses.KEY_UP

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

curses.KEY_LEFT

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

curses.KEY_RIGHT

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

curses.KEY_HOME

Клавиша Home (стрелка вверх-влево)

curses.KEY_BACKSPACE

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

curses.KEY_F0

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

curses.KEY_Fn

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

curses.KEY_DL

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

curses.KEY_IL

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

curses.KEY_DC

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

curses.KEY_IC

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

curses.KEY_EIC

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

curses.KEY_CLEAR

Очистить экран

curses.KEY_EOS

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

curses.KEY_EOL

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

curses.KEY_SF

Прокрутить на 1 строку вперёд

curses.KEY_SR

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

curses.KEY_NPAGE

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

curses.KEY_PPAGE

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

curses.KEY_STAB

Установить табуляцию

curses.KEY_CTAB

Очистить табуляцию

curses.KEY_CATAB

Очистить все табуляции

curses.KEY_ENTER

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

curses.KEY_SRESET

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

curses.KEY_RESET

Сброс или жёсткий сброс (ненадёжно)

curses.KEY_PRINT

Печать

curses.KEY_LL

Домой вниз или нижняя строка (левый нижний)

curses.KEY_A1

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

curses.KEY_A3

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

curses.KEY_B2

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

curses.KEY_C1

Нижний левый угол клавиатуры

curses.KEY_C3

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

curses.KEY_BTAB

Обратная табуляция

curses.KEY_BEG

Начало

curses.KEY_CANCEL

Отмена

curses.KEY_CLOSE

Закрыть

curses.KEY_COMMAND

Команда

curses.KEY_COPY

Копировать

curses.KEY_CREATE

Создать

curses.KEY_END

Конец

curses.KEY_EXIT

Выход

curses.KEY_FIND

Найти

curses.KEY_HELP

Помощь

curses.KEY_MARK

Отметка

curses.KEY_MESSAGE

Сообщение

curses.KEY_MOVE

Переместить

curses.KEY_NEXT

Далее

curses.KEY_OPEN

Открыть

curses.KEY_OPTIONS

Параметры

curses.KEY_PREVIOUS

Назад (предыдущий)

curses.KEY_REDO

Повторить

curses.KEY_REFERENCE

Справка (ссылка)

curses.KEY_REFRESH

Обновить

curses.KEY_REPLACE

Заменить

curses.KEY_RESTART

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

curses.KEY_RESUME

Возобновить

curses.KEY_SAVE

Сохранить

curses.KEY_SBEG

Shift+Начало (начало)

curses.KEY_SCANCEL

Shift+Отмена

curses.KEY_SCOMMAND

Shift+Команда

curses.KEY_SCOPY

Shift+Копировать

curses.KEY_SCREATE

Shift+Создать

curses.KEY_SDC

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

curses.KEY_SDL

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

curses.KEY_SELECT

Выбор

curses.KEY_SEND

Shift+Конец

curses.KEY_SEOL

Shift+Очистка строки

curses.KEY_SEXIT

Shift+Выход

curses.KEY_SFIND

Shift+Найти

curses.KEY_SHELP

Shift+Справка

curses.KEY_SHOME

Shift+Начало

curses.KEY_SIC

Shift+Ввод

curses.KEY_SLEFT

Shift+Стрелка влево

curses.KEY_SMESSAGE

Shift+Сообщение

curses.KEY_SMOVE

Shift+Перемещение

curses.KEY_SNEXT

Shift+Далее

curses.KEY_SOPTIONS

Shift+Параметры

curses.KEY_SPREVIOUS

Shift+Назад

curses.KEY_SPRINT

Shift+Печать

curses.KEY_SREDO

Shift+Повтор

curses.KEY_SREPLACE

Замена с Shift

curses.KEY_SRIGHT

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

curses.KEY_SRSUME

Возобновление с Shift

curses.KEY_SSAVE

Сохранение с Shift

curses.KEY_SSUSPEND

Приостановка с Shift

curses.KEY_SUNDO

Отмена с Shift

curses.KEY_SUSPEND

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

curses.KEY_UNDO

Отменить

curses.KEY_MOUSE

Событие мыши

curses.KEY_RESIZE

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

curses.KEY_MAX

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

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

Клавиша

Константа

Insert

KEY_IC

Delete

KEY_DC

Home

KEY_HOME

End

KEY_END

Page Up

KEY_PPAGE

Page Down

KEY_NPAGE

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

Примечание

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

Код ACS

Значение

curses.ACS_BBSS

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

curses.ACS_BLOCK

сплошной квадратный блок

curses.ACS_BOARD

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

curses.ACS_BSBS

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

curses.ACS_BSSB

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

curses.ACS_BSSS

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

curses.ACS_BTEE

нижний тройник

curses.ACS_BULLET

маркер

curses.ACS_CKBOARD

шахматная доска (точечный узор)

curses.ACS_DARROW

стрелка вниз

curses.ACS_DEGREE

символ градуса

curses.ACS_DIAMOND

ромб

curses.ACS_GEQUAL

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

curses.ACS_HLINE

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

curses.ACS_LANTERN

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

curses.ACS_LARROW

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

curses.ACS_LEQUAL

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

curses.ACS_LLCORNER

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

curses.ACS_LRCORNER

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

curses.ACS_LTEE

левый тройник

curses.ACS_NEQUAL

знак не равно

curses.ACS_PI

буква пи

curses.ACS_PLMINUS

плюс-минус

curses.ACS_PLUS

большой плюс

curses.ACS_RARROW

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

curses.ACS_RTEE

правый тройник

curses.ACS_S1

линия развертки 1

curses.ACS_S3

линия развертки 3

curses.ACS_S7

линия развертки 7

curses.ACS_S9

линия развертки 9

curses.ACS_SBBS

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

curses.ACS_SBSB

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

curses.ACS_SBSS

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

curses.ACS_SSBB

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

curses.ACS_SSBS

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

curses.ACS_SSSB

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

curses.ACS_SSSS

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

curses.ACS_STERLING

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

curses.ACS_TTEE

верхний тройник

curses.ACS_UARROW

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

curses.ACS_ULCORNER

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

curses.ACS_URCORNER

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

curses.ACS_VLINE

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

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

Константа кнопки мыши

Значение

curses.BUTTONn_PRESSED

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

curses.BUTTONn_RELEASED

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

curses.BUTTONn_CLICKED

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

curses.BUTTONn_DOUBLE_CLICKED

Кнопка мыши n дважды щелкнута

curses.BUTTONn_TRIPLE_CLICKED

Тройной клик кнопки мыши n

curses.BUTTON_SHIFT

Shift был нажат при изменении состояния кнопки

curses.BUTTON_CTRL

Control был нажат при изменении состояния кнопки

curses.BUTTON_ALT

Alt был нажат при изменении состояния кнопки

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

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

Константа

Цвет

curses.COLOR_BLACK

Чёрный

curses.COLOR_BLUE

Синий

curses.COLOR_CYAN

Голубой (светлый сине-зелёный)

curses.COLOR_GREEN

Зелёный

curses.COLOR_MAGENTA

Пурпурный (красновато-фиолетовый)

curses.COLOR_RED

Красный

curses.COLOR_WHITE

Белый

curses.COLOR_YELLOW

Жёлтый

curses.textpad – виджет ввода текста для программ cursescurses.textpad – Text input widget for curses programs

Модуль 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: дефисов, вертикальных черт и знаков плюс.

Объекты TextboxTextbox objects

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

class curses.textpad.Textbox(win, insert_mode=False)

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

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

edit(validate=None)

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

do_command(ch)

Обрабатывает одно нажатие командной клавиши. Возвращает 1 для продолжения редактирования или 0, если была обработана завершающая клавиша. Ниже перечислены поддерживаемые специальные клавиши:

Клавиша

Действие

Control-A

Переход к левому краю окна.

Control-B

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

Control-D

Удалить символ под курсором.

Control-E

Перейти к правому краю (stripspaces off) или в конец строки (stripspaces on).

Control-F

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

Control-G

Завершить, вернув содержимое окна.

Control-H

Удалить предыдущий символ.

Control-J

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

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

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