curses
— Обработка терминала для отображения символьных ячеек¶
Источник: Lib/curses
Модуль curses
предоставляет интерфейс к библиотеке curses, стандарту де-факто для переносимой расширенной обработки терминалов.
Хотя curses наиболее широко используется в среде Unix, существуют версии для Windows, DOS и, возможно, других систем. Этот модуль расширения разработан для соответствия API ncurses, библиотеки curses с открытым исходным кодом, размещенной в Linux и BSD-версиях Unix.
Availability: не WASI, не iOS.
Этот модуль не работает или недоступен на платформах WebAssembly или iOS. Дополнительные сведения о доступности WASM см. в разделе Платформы WebAssembly; о доступности iOS - в разделе iOS.
Примечание
Когда в документации упоминается символ, он может быть указан как целое число, односимвольная строка Unicode или однобайтовая байтовая строка.
Всякий раз, когда в документации упоминается символьная строка, она может быть указана как строка Unicode или байтовая строка.
См.также
- Модуль
curses.ascii
Утилиты для работы с символами ASCII, независимо от настроек локали.
- Модуль
curses.panel
Расширение стека панелей, которое добавляет глубину окнам curses.
- Модуль
curses.textpad
Редактируемый текстовый виджет для curses, поддерживающий Emacs-подобные привязки.
- Программирование на Curses с помощью Python
Учебный материал по использованию curses с Python, написанный Эндрю Кучлингом и Эриком Рэймондом.
Функции¶
Модуль curses
определяет следующее исключение:
- exception curses.error¶
Исключение, возникающее, когда функция библиотеки curses возвращает ошибку.
Примечание
Если аргументы x или y в функции или методе необязательны, то по умолчанию они соответствуют текущему местоположению курсора. Если attr является необязательным, то по умолчанию он принимает значение A_NORMAL
.
Модуль curses
определяет следующие функции:
- curses.baudrate()¶
Возвращает скорость вывода терминала в битах в секунду. В программных эмуляторах терминалов это значение будет фиксированно высоким. Включено по историческим причинам; в прежние времена оно использовалось для написания выходных циклов для временных задержек и иногда для изменения интерфейсов в зависимости от скорости линии.
- curses.beep()¶
Издает короткий звук внимания.
- curses.can_change_color()¶
Верните
True
илиFalse
, в зависимости от того, может ли программист изменять цвета, отображаемые терминалом.
- curses.cbreak()¶
Войдите в режим cbreak. В режиме cbreak (иногда называемом «редким» режимом) обычная буферизация линий tty отключена, и символы доступны для чтения один за другим. Однако, в отличие от режима raw, специальные символы (прерывание, выход, приостановка и управление потоком) сохраняют свое влияние на драйвер tty и вызывающую программу. Вызов сначала
raw()
, затемcbreak()
оставляет терминал в режиме cbreak.
- curses.color_content(color_number)¶
Возвращает интенсивность красной, зеленой и синей (RGB) компонент в цвете color_number, который должен быть между
0
иCOLORS - 1
. Возвращает 3 кортежа, содержащих значения R,G,B для данного цвета, которые будут находиться в диапазоне от0
(отсутствие компонент) до1000
(максимальное количество компонент).
- curses.color_pair(pair_number)¶
Возвращает значение атрибута для отображения текста в указанной паре цветов. Поддерживаются только первые 256 пар цветов. Это значение атрибута можно комбинировать с
A_STANDOUT
,A_REVERSE
и другими атрибутамиA_*
.pair_number()
является аналогом этой функции.
- curses.curs_set(visibility)¶
Установка состояния курсора. Значение visibility может быть установлено в
0
,1
или2
, для невидимого, нормального или очень видимого. Если терминал поддерживает запрашиваемую видимость, верните предыдущее состояние курсора; в противном случае вызовите исключение. На многих терминалах режим «видимый» - это курсор подчеркивания, а режим «очень видимый» - блочный курсор.
- curses.def_prog_mode()¶
Сохраняет текущий режим терминала как режим «программы» - режим, когда запущенная программа использует curses. (Его аналог - режим «shell», когда программа не использует curses.) Последующие вызовы
reset_prog_mode()
будут восстанавливать этот режим.
- curses.def_shell_mode()¶
Сохраните текущий режим терминала как режим «оболочки» - режим, когда запущенная программа не использует curses. (Его аналог - режим «программы», когда программа использует возможности curses). Последующие вызовы
reset_shell_mode()
будут восстанавливать этот режим.
- curses.delay_output(ms)¶
Вставьте в вывод миллисекундную паузу ms.
- curses.doupdate()¶
Обновление физического экрана. Библиотека curses хранит две структуры данных, одна из которых представляет текущее содержимое физического экрана, а другая - виртуальный экран, представляющий желаемое следующее состояние. Земля
doupdate()
обновляет физический экран, чтобы он соответствовал виртуальному.Виртуальный экран может быть обновлен вызовом
noutrefresh()
после выполнения операций записи в окно, таких какaddstr()
. Обычный вызовrefresh()
- это простоnoutrefresh()
, за которым следуетdoupdate()
; если вам нужно обновить несколько окон, вы можете ускорить работу и, возможно, уменьшить мерцание экрана, выполнив вызовnoutrefresh()
для всех окон, за которым следует одинdoupdate()
.
- curses.echo()¶
Войдите в режим эхо. В режиме эхо каждый вводимый символ отражается на экране по мере его ввода.
- curses.endwin()¶
Деинициализируйте библиотеку и верните терминал в нормальное состояние.
- curses.erasechar()¶
Возвращает текущий символ стирания пользователя в виде однобайтового байтового объекта. В операционных системах Unix это свойство управляющего tty программы curses, и оно не задается самой библиотекой curses.
- curses.filter()¶
Процедура
filter()
, если она используется, должна быть вызвана до вызоваinitscr()
. В результате во время этих вызововLINES
устанавливается в значение1
; возможностиclear
,cup
,cud
,cud1
,cuu1
,cuu
,vpa
отключаются; а строкаhome
устанавливается в значениеcr
. В результате курсор ограничивается текущей строкой, а также обновляется экран. Это можно использовать для редактирования строки по символам за раз, не затрагивая остальной экран.
- curses.flash()¶
Мигание экрана. То есть переключите его на обратное видео, а затем через короткий промежуток времени переключите обратно. Некоторые люди предпочитают такой «видимый звонок» звуковому сигналу внимания, издаваемому
beep()
.
- curses.flushinp()¶
Промыть все входные буферы. При этом отбрасывается любой typeahead, который был набран пользователем и еще не был обработан программой.
- curses.getmouse()¶
После того как
getch()
возвращаетKEY_MOUSE
, сигнализируя о событии мыши, этот метод следует вызвать для получения события мыши, поставленного в очередь, представленного в виде 5 кортежей(id, x, y, z, bstate)
. id - это значение ID, используемое для различения нескольких устройств, а x, y, z - это координаты события. (z в настоящее время не используется). bstate - целочисленное значение, биты которого будут установлены для указания типа события, и представляет собой побитовое ИЛИ одной или нескольких из следующих констант, где n - номер кнопки от 1 до 5:BUTTONn_PRESSED
,BUTTONn_RELEASED
,BUTTONn_CLICKED
,BUTTONn_DOUBLE_CLICKED
,BUTTONn_TRIPLE_CLICKED
,BUTTON_SHIFT
,BUTTON_CTRL
,BUTTON_ALT
.Изменено в версии 3.10: Константы
BUTTON5_*
теперь открываются, если они предоставляются базовой библиотекой curses.
- curses.getsyx()¶
Возвращает текущие координаты курсора виртуального экрана в виде кортежа
(y, x)
. Еслиleaveok
в данный момент равенTrue
, то возвращается(-1, -1)
.
- curses.getwin(file)¶
Считывание данных, связанных с окном, сохраненных в файле предыдущим вызовом
window.putwin()
. Затем процедура создает и инициализирует новое окно, используя эти данные, и возвращает объект нового окна.
- curses.has_colors()¶
Верните
True
, если терминал может отображать цвета; в противном случае вернитеFalse
.
- curses.has_extended_color_support()¶
Возвращает
True
, если модуль поддерживает расширенные цвета; в противном случае возвращаетFalse
. Поддержка расширенных цветов позволяет использовать более 256 пар цветов для терминалов, поддерживающих более 16 цветов (например, xterm-256color).Для расширенной поддержки цветов требуется ncurses версии 6.1 или более поздней.
Added in version 3.10.
- curses.has_ic()¶
Возвращает
True
, если терминал имеет возможность вставлять и удалять символы. Эта функция включена только по историческим причинам, так как все современные программные эмуляторы терминалов имеют такие возможности.
- curses.has_il()¶
Возвращает
True
, если терминал имеет возможности вставки и удаления строк или может имитировать их с помощью прокручивающихся областей. Эта функция включена только по историческим причинам, так как все современные программные эмуляторы терминалов имеют такие возможности.
- curses.has_key(ch)¶
Принимает значение ключа ch и возвращает
True
, если текущий тип терминала распознает ключ с таким значением.
- curses.halfdelay(tenths)¶
Используется для режима полузадержки, который похож на режим cbreak тем, что символы, набранные пользователем, сразу же становятся доступны программе. Однако после блокировки в течение tenths десятых долей секунды, если ничего не было набрано, следует вызвать исключение. Значение tenths должно быть числом между
1
и255
. Используйтеnocbreak()
, чтобы выйти из режима половинной задержки.
- curses.init_color(color_number, r, g, b)¶
Измените определение цвета, взяв номер изменяемого цвета и три значения RGB (для количества красного, зеленого и синего компонентов). Значение color_number должно быть между
0
иCOLORS - 1
. Каждое из r, g, b должно быть значением между0
и1000
. При использованииinit_color()
все встречающиеся на экране цвета немедленно меняются на новое определение. На большинстве терминалов эта функция не работает; она активна, только еслиcan_change_color()
возвращаетTrue
.
- curses.init_pair(pair_number, fg, bg)¶
Изменяет определение пары цветов. Принимает три аргумента: номер изменяемой пары цветов, номер цвета переднего плана и номер цвета фона. Значение pair_number должно быть между
1
иCOLOR_PAIRS - 1
(пара цветов0
подключена к белому на черном и не может быть изменена). Значение аргументов fg и bg должно быть между0
иCOLORS - 1
, или, после вызоваuse_default_colors()
,-1
. Если пара цветов была инициализирована ранее, экран обновляется и все вхождения этой пары цветов изменяются на новое определение.
- curses.initscr()¶
Инициализация библиотеки. Возвращает объект window, который представляет весь экран.
Примечание
Если при открытии терминала произошла ошибка, библиотека curses может привести к выходу интерпретатора.
- curses.is_term_resized(nlines, ncols)¶
Возвращает
True
, еслиresize_term()
изменит структуру окна,False
- в противном случае.
- curses.isendwin()¶
Возвращает
True
, если был вызванendwin()
(то есть библиотека curses была деинициализирована).
- curses.keyname(k)¶
Возвращает имя ключа с номером k в виде объекта bytes. Имя клавиши, генерирующей печатный ASCII-символ, - это символ клавиши. Имя комбинации управляющих клавиш - двухбайтовый байтовый объект, состоящий из каретки (
b'^'
) и соответствующего печатаемого символа ASCII. Имя комбинации клавиш alt (128–255) - это байтовый объект, состоящий из префиксаb'M-'
, за которым следует имя соответствующего символа ASCII.
- curses.killchar()¶
Возвращает символ завершения текущей строки пользователя в виде однобайтового байтового объекта. В операционных системах Unix это свойство управляющего tty программы curses, и оно не задается самой библиотекой curses.
- curses.longname()¶
Возвращает объект bytes, содержащий поле terminfo long name, описывающее текущий терминал. Максимальная длина подробного описания составляет 128 символов. Оно определяется только после вызова
initscr()
.
- curses.meta(flag)¶
Если flag равен
True
, разрешается ввод 8-битных символов. Если flag равенFalse
, разрешается вводить только 7-битные символы.
- curses.mouseinterval(interval)¶
Установите максимальное время в миллисекундах, которое может пройти между событиями нажатия и отпускания, чтобы они были распознаны как щелчок, и верните предыдущее значение интервала. Значение по умолчанию - 200 миллисекунд, или одна пятая секунды.
- curses.mousemask(mousemask)¶
Устанавливает события мыши, о которых нужно сообщать, и возвращает кортеж
(availmask, oldmask)
. availmask указывает, какие из указанных событий мыши могут быть сообщены; при полном отказе возвращается0
. oldmask - предыдущее значение маски событий мыши данного окна. Если эта функция никогда не вызывается, то ни одно событие мыши не будет сообщено.
- curses.napms(ms)¶
Спите в течение ms миллисекунд.
- curses.newpad(nlines, ncols)¶
Создает и возвращает указатель на новую структуру данных pad с заданным количеством строк и столбцов. Возвращает блокнот в виде объекта окна.
Пад похож на окно, за исключением того, что он не ограничен размером экрана и не обязательно связан с определенной частью экрана. Пады можно использовать, когда требуется большое окно, а на экране в один момент времени будет находиться только часть окна. Автоматическое обновление пэдов (например, при прокрутке или эхо ввода) не происходит. Методы
refresh()
иnoutrefresh()
пэда требуют 6 аргументов для указания части пэда, которая должна быть отображена, и места на экране, которое будет использоваться для отображения. Аргументы pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol; аргументы p относятся к левому верхнему углу отображаемой области пэда, а аргументы s определяют обрезную рамку на экране, в пределах которой должна быть отображена область пэда.
- curses.newwin(nlines, ncols)¶
- curses.newwin(nlines, ncols, begin_y, begin_x)
Возвращает новый window, левый верхний угол которого находится в
(begin_y, begin_x)
, а высота/ширина равна nlines/ncols.По умолчанию окно будет расширяться от указанной позиции до правого нижнего угла экрана.
- curses.nl()¶
Войдите в режим новой строки. Этот режим преобразует клавишу return в newline на вводе и преобразует newline в return и line-feed на выводе. Изначально режим новой строки включен.
- curses.nocbreak()¶
Выйдите из режима cbreak. Вернитесь в обычный «приготовленный» режим с буферизацией строк.
- curses.noecho()¶
Выход из режима эхо. Эхо при вводе символов отключено.
- curses.nonl()¶
Оставьте режим новой строки. Отключите перевод возврата в новую строку на вводе и отключите низкоуровневый перевод новой строки в новую строку/возврат на выводе (но это не изменит поведение
addch('\n')
, который всегда выполняет эквивалент возврата и перевода строки на виртуальном экране). При отключенной трансляции curses иногда может немного ускорить вертикальное движение; кроме того, он сможет обнаружить клавишу return на вводе.
- curses.noqiflush()¶
При использовании процедуры
noqiflush()
обычная промывка очередей ввода и вывода, связанных с символамиINTR
,QUIT
иSUSP
, не выполняется. Вызовnoqiflush()
может потребоваться в обработчике сигнала, если вы хотите, чтобы после выхода обработчика вывод продолжался так, как будто прерывание не произошло.
- curses.noraw()¶
Выйдите из режима «сырой». Вернитесь в нормальный «приготовленный» режим с буферизацией строки.
- curses.pair_content(pair_number)¶
Возвращает кортеж
(fg, bg)
, содержащий цвета для запрашиваемой пары цветов. Значение pair_number должно быть между0
иCOLOR_PAIRS - 1
.
- curses.pair_number(attr)¶
Возвращает номер пары цветов, заданной значением атрибута attr.
color_pair()
является аналогом этой функции.
- curses.putp(str)¶
Эквивалентно
tputs(str, 1, putchar)
; выдает значение заданной возможности terminfo для текущего терминала. Обратите внимание, что выводputp()
всегда идет в стандартный вывод.
- curses.qiflush([flag])¶
Если flag равен
False
, эффект будет таким же, как и при вызовеnoqiflush()
. Если flag равенTrue
или аргумент не указан, то при чтении этих управляющих символов очереди будут смыты.
- curses.raw()¶
Войдите в необработанный режим. В режиме raw нормальная буферизация строки и обработка прерывания, выхода, приостановки и клавиш управления потоком отключены; символы подаются на функции ввода curses по одному.
- curses.reset_prog_mode()¶
Верните терминал в режим «программа», сохраненный ранее командой
def_prog_mode()
.
- curses.reset_shell_mode()¶
Верните терминал в режим «оболочки», сохраненный ранее командой
def_shell_mode()
.
- curses.resetty()¶
Восстановление состояния режимов терминала до того, каким оно было при последнем вызове
savetty()
.
- curses.resize_term(nlines, ncols)¶
Внутренняя функция, используемая
resizeterm()
, выполняет большую часть работы; при изменении размеров оконresize_term()
заполняет пустые области, которые расширяются. Вызывающее приложение должно заполнить эти области соответствующими данными. Функцияresize_term()
пытается изменить размеры всех окон. Однако из-за особенностей вызова колодок изменить их размер без дополнительного взаимодействия с приложением не представляется возможным.
- curses.resizeterm(nlines, ncols)¶
Изменяет размеры стандартного и текущего окон до указанных размеров, а также корректирует другие данные, используемые библиотекой curses для записи размеров окна (в частности, обработчик SIGWINCH).
- curses.get_escdelay()¶
Извлекает значение, заданное
set_escdelay()
.Added in version 3.9.
- curses.set_escdelay(ms)¶
Устанавливает количество миллисекунд ожидания после считывания управляющего символа, чтобы отличить отдельный управляющий символ, введенный с клавиатуры, от управляющих последовательностей, посылаемых курсором и функциональными клавишами.
Added in version 3.9.
- curses.get_tabsize()¶
Извлекает значение, заданное
set_tabsize()
.Added in version 3.9.
- curses.set_tabsize(size)¶
Устанавливает количество столбцов, используемых библиотекой curses при преобразовании символов табуляции в пробелы, когда она добавляет табуляцию в окно.
Added in version 3.9.
- curses.setsyx(y, x)¶
Установите курсор виртуального экрана на y, x. Если y и x равны
-1
, тоleaveok
устанавливаетсяTrue
.
- curses.setupterm(term=None, fd=-1)¶
Инициализация терминала. term - строка, задающая имя терминала, или
None
; если не указано илиNone
, будет использовано значение переменной окруженияTERM
. fd - дескриптор файла, в который будут отправлены все инициализационные последовательности; если он не указан или-1
, будет использован дескриптор файла дляsys.stdout
.
- curses.start_color()¶
Должна вызываться, если программист хочет использовать цвета, и перед вызовом любой другой процедуры работы с цветом. Хорошей практикой является вызов этой процедуры сразу после
initscr()
.start_color()
инициализирует восемь основных цветов (черный, красный, зеленый, желтый, синий, пурпурный, голубой и белый), а также две глобальные переменные в модулеcurses
,COLORS
иCOLOR_PAIRS
, содержащие максимальное количество цветов и цветовых пар, которые может поддерживать терминал. Она также восстанавливает цвета на терминале до значений, которые они имели, когда терминал был только что включен.
- curses.termattrs()¶
Возвращает логическое ИЛИ всех видеоатрибутов, поддерживаемых терминалом. Эта информация полезна, когда программе curses требуется полный контроль над внешним видом экрана.
- curses.termname()¶
Возвращает значение переменной окружения
TERM
в виде объекта bytes, усеченного до 14 символов.
- curses.tigetflag(capname)¶
Возвращает значение булевой характеристики, соответствующей имени характеристики terminfo capname, в виде целого числа. Возвращает значение
-1
, если capname не является булевой способностью, или0
, если она отменена или отсутствует в описании терминала.
- curses.tigetnum(capname)¶
Возвращает значение числовой возможности, соответствующей имени возможности terminfo capname, в виде целого числа. Возвращает значение
-2
, если capname не является числовой возможностью, или-1
, если она отменена или отсутствует в описании терминала.
- curses.tigetstr(capname)¶
Возвращает значение строковой возможности, соответствующей имени terminfo-возможности capname, в виде объекта bytes. Возвращает
None
, если capname не является «строковой возможностью» terminfo, либо отменена или отсутствует в описании терминала.
- curses.tparm(str[, ...])¶
Инстанцирует байтовый объект str с заданными параметрами, где str должна быть параметризованной строкой, полученной из базы данных terminfo. Например,
tparm(tigetstr("cup"), 5, 3)
может привести кb'\033[6;4H'
, точный результат зависит от типа терминала.
- curses.typeahead(fd)¶
Укажите, что дескриптор файла fd должен использоваться для проверки опережения типов. Если fd равен
-1
, то проверка опережения типа не производится.Библиотека curses выполняет «оптимизацию перевода строки», периодически проверяя наличие typeahead при обновлении экрана. Если он найден и поступает с tty, текущее обновление откладывается до повторного вызова refresh или doupdate, что позволяет быстрее реагировать на команды, набранные заранее. Эта функция позволяет указать другой дескриптор файла для проверки typeahead.
- curses.unctrl(ch)¶
Возвращает объект bytes, который является печатным представлением символа ch. Управляющие символы представляются в виде каретки, за которой следует символ, например,
b'^C'
. Печатные символы оставляются как есть.
- curses.ungetch(ch)¶
Нажмите ch, чтобы следующий
getch()
вернул его.Примечание
Только одна ch может быть нажата до вызова
getch()
.
- curses.update_lines_cols()¶
Обновление переменных модуля
LINES
иCOLS
. Полезно для определения ручного изменения размера экрана.Added in version 3.5.
- curses.unget_wch(ch)¶
Нажмите ch, чтобы следующий
get_wch()
вернул его.Примечание
Только одна ch может быть нажата до вызова
get_wch()
.Added in version 3.3.
- curses.ungetmouse(id, x, y, z, bstate)¶
Вставьте событие
KEY_MOUSE
во входную очередь, связав с ним заданные данные состояния.
- curses.use_env(flag)¶
Если используется, то эта функция должна быть вызвана до вызова
initscr()
или newterm. Если flag равенFalse
, будут использоваться значения строк и столбцов, указанные в базе данных terminfo, даже если установлены переменные окруженияLINES
иCOLUMNS
(используемые по умолчанию), или если curses запущен в окне (в этом случае по умолчанию будет использоваться размер окна, еслиLINES
иCOLUMNS
не установлены).
- curses.use_default_colors()¶
Разрешите использовать значения по умолчанию для цветов на терминалах, поддерживающих эту функцию. Используйте это для поддержки прозрачности в вашем приложении. Цвет по умолчанию присваивается номеру цвета
-1
. После вызова этой функцииinit_pair(x, curses.COLOR_RED, -1)
инициализирует, например, цветовую пару x красным цветом переднего плана на фоне по умолчанию.
- curses.wrapper(func, /, *args, **kwargs)¶
Инициализируйте curses и вызовите другой вызываемый объект, func, который должен быть остальной частью вашего приложения, использующего curses. Если приложение вызовет исключение, эта функция вернет терминал в нормальное состояние, прежде чем снова поднять исключение и сгенерировать обратный след. Вызываемому объекту func в качестве первого аргумента передается главное окно „stdscr“, а затем все остальные аргументы, переданные в
wrapper()
. Перед вызовом funcwrapper()
включает режим 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
Левая сторона
rs
Правая сторона
ts
Топ
bs
Дно
tl
Верхний левый угол
tr
Правый верхний угол
bl
Левый нижний угол
br
Правый нижний угол
- 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.clrtobot()¶
Стирание от курсора до конца окна: удаляются все строки под курсором, а затем выполняется эквивалент
clrtoeol()
.
- window.clrtoeol()¶
Стирание от курсора до конца строки.
- window.cursyncup()¶
Обновление текущей позиции курсора всех предков окна для отражения текущей позиции курсора окна.
- window.delch([y, x])¶
Удалите любой символ по адресу
(y, x)
.
- window.deleteln()¶
Удалите строку под курсором. Все последующие строки сдвигаются на одну строку вверх.
- window.derwin(begin_y, begin_x)¶
- window.derwin(nlines, ncols, begin_y, begin_x)
Сокращение от «derive window»,
derwin()
- это то же самое, что и вызовsubwin()
, за исключением того, что begin_y и begin_x находятся относительно начала окна, а не относительно всего экрана. Возвращает объект окна для производного окна.
- window.echochar(ch[, attr])¶
Добавьте символ ch с атрибутом attr и немедленно вызовите
refresh()
в окне.
- window.enclose(y, x)¶
Проверяет, заключена ли заданная пара экранно-относительных координат символ-ячейка в заданное окно, возвращая
True
илиFalse
. Это полезно для определения того, какое подмножество окон экрана охватывает местоположение события мыши.Изменено в версии 3.10: Ранее он возвращал
1
или0
вместоTrue
илиFalse
.
- window.encoding¶
Кодировка, используемая для кодирования аргументов метода (строк и символов Unicode). Атрибут кодировки наследуется от родительского окна при создании подокна, например, с помощью
window.subwin()
. По умолчанию используется кодировка текущей локали (см.locale.getencoding()
).Added in version 3.3.
- window.erase()¶
Очистите окно.
- window.getbegyx()¶
Возвращает кортеж
(y, x)
координат левого верхнего угла.
- window.getbkgd()¶
Возвращает текущую пару символов/атрибутов фона данного окна.
- window.getch([y, x])¶
Получить символ. Обратите внимание, что возвращаемое целое число не обязательно должно быть в диапазоне ASCII: функциональные клавиши, клавиши клавиатуры и так далее представляются числами, превышающими 255. В режиме без задержки возвращается
-1
, если нет ввода, в противном случае ожидание нажатия клавиши.
- window.get_wch([y, x])¶
Получение широкого символа. Возвращает символ для большинства клавиш или целое число для функциональных клавиш, клавиш клавиатуры и других специальных клавиш. В режиме без задержки вызывает исключение при отсутствии ввода.
Added in version 3.3.
- window.getkey([y, x])¶
Получение символа, возвращающего строку вместо целого числа, как это делает
getch()
. Функциональные клавиши, клавиши клавиатуры и другие специальные клавиши возвращают многобайтовую строку, содержащую имя клавиши. В режиме без задержки вызывает исключение при отсутствии ввода.
- window.getmaxyx()¶
Возвращает кортеж
(y, x)
из высоты и ширины окна.
- window.getparyx()¶
Возвращает начальные координаты этого окна относительно его родительского окна в виде кортежа
(y, x)
. Верните(-1, -1)
, если у этого окна нет родителя.
- window.getstr()¶
- window.getstr(n)
- window.getstr(y, x)
- window.getstr(y, x, n)
Считывание байтового объекта от пользователя с возможностью примитивного редактирования строк.
- window.getyx()¶
Возвращает кортеж
(y, x)
текущей позиции курсора относительно левого верхнего угла окна.
- window.hline(ch, n)¶
- window.hline(y, x, ch, n)
Выведите горизонтальную линию, начинающуюся в точке
(y, x)
, длиной n, состоящую из символа ch.
- window.idcok(flag)¶
Если flag равен
False
, то curses больше не рассматривает использование аппаратной функции вставки/удаления символов терминала; если flag равенTrue
, то использование вставки и удаления символов разрешено. Когда curses инициализируется впервые, использование вставки/удаления символов включено по умолчанию.
- window.idlok(flag)¶
Если флаг равен
True
, тоcurses
будет пытаться использовать аппаратные средства редактирования строк. В противном случае вставка/удаление строк отключены.
- window.immedok(flag)¶
Если flag равен
True
, любое изменение изображения окна автоматически приводит к его обновлению; вам больше не нужно вызыватьrefresh()
самостоятельно. Однако это может значительно снизить производительность из-за повторных вызовов wrefresh. По умолчанию эта опция отключена.
- window.inch([y, x])¶
Возвращает символ в заданной позиции в окне. Нижние 8 бит - собственно символ, а верхние - атрибуты.
- window.insch(ch[, attr])¶
- window.insch(y, x, ch[, attr])
Нарисуйте символ ch по адресу
(y, x)
с атрибутами attr, сдвигая строку из позиции x вправо на один символ.
- window.insdelln(nlines)¶
Вставляет nlines строк в указанное окно над текущей строкой. Нижние строки nlines теряются. Для отрицательных nlines удалите nlines строк, начиная с той, которая находится под курсором, и переместите оставшиеся строки вверх. Нижние строки nlines будут очищены. Текущая позиция курсора остается неизменной.
- window.insertln()¶
Вставьте пустую строку под курсором. Все последующие строки сдвигаются вниз на одну строку.
- window.insnstr(str, n[, attr])¶
- window.insnstr(y, x, str, n[, attr])
Вставьте строку символов (столько, сколько поместится в строке) перед символом под курсором, до n символов. Если n равно нулю или отрицательно, вставляется вся строка. Все символы справа от курсора сдвигаются вправо, при этом самые правые символы в строке теряются. Положение курсора не изменяется (после перемещения на y, x, если указано).
- window.insstr(str[, attr])¶
- window.insstr(y, x, str[, attr])
Вставьте строку символов (столько, сколько поместится в строке) перед символом, находящимся под курсором. Все символы справа от курсора сдвигаются вправо, при этом самые правые символы в строке теряются. Положение курсора не изменяется (после перемещения на y, x, если указано).
- window.instr([n])¶
- window.instr(y, x[, n])
Возвращает байтовый объект символов, извлеченных из окна, начиная с текущей позиции курсора, или в точках y, x, если они указаны. Атрибуты удаляются из символов. Если указано n,
instr()
возвращает строку длиной не более n символов (без учета NUL в конце строки).
- window.is_linetouched(line)¶
Возвращает
True
, если указанная строка была изменена с момента последнего вызоваrefresh()
; в противном случае возвращаетFalse
. Вызывает исключениеcurses.error
, если строка недопустима для данного окна.
- window.is_wintouched()¶
Возвращает
True
, если указанное окно было изменено с момента последнего вызоваrefresh()
; в противном случае возвращаетFalse
.
- window.keypad(flag)¶
Если flag равен
True
, то управляющие последовательности, генерируемые некоторыми клавишами (клавиатура, функциональные клавиши), будут интерпретироваться какcurses
. Если флаг равенFalse
, управляющие последовательности будут оставлены в потоке ввода как есть.
- window.leaveok(flag)¶
Если флаг равен
True
, курсор остается там, где он находится при обновлении, вместо того чтобы находиться в «позиции курсора». Это уменьшает перемещение курсора, где это возможно. Если возможно, курсор будет сделан невидимым.Если флаг равен
False
, то после обновления курсор всегда будет находиться в «позиции курсора».
- window.move(new_y, new_x)¶
Переместите курсор на
(new_y, new_x)
.
- window.mvderwin(y, x)¶
Перемещение окна внутрь родительского окна. Экранно-относительные параметры окна не изменяются. Эта процедура используется для отображения различных частей родительского окна в одном и том же физическом положении на экране.
- window.mvwin(new_y, new_x)¶
Переместите окно так, чтобы его левый верхний угол находился в точке
(new_y, new_x)
.
- window.notimeout(flag)¶
Если флаг равен
True
, экранирующие последовательности не будут прерываться по таймеру.Если flag равен
False
, то через несколько миллисекунд управляющая последовательность не будет интерпретирована и будет оставлена во входном потоке как есть.
- window.noutrefresh()¶
Пометить для обновления, но подождать. Эта функция обновляет структуру данных, представляющую желаемое состояние окна, но не заставляет обновлять физический экран. Чтобы добиться этого, вызовите
doupdate()
.
- window.overlay(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol])¶
Наложите окно поверх destwin. Окна не обязательно должны быть одинакового размера, копируется только область наложения. Это копирование является неразрушающим, то есть текущий фоновый символ не перезаписывает старое содержимое destwin.
Чтобы получить более тонкий контроль над копируемой областью, можно использовать вторую форму
overlay()
. sminrow и smincol - это верхне-левые координаты исходного окна, а остальные переменные обозначают прямоугольник в окне назначения.
- window.overwrite(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol])¶
Перепишите окно поверх destwin. Окна не обязательно должны быть одинакового размера, в этом случае копируется только область перекрытия. Это копирование является деструктивным, то есть текущий фоновый символ перезаписывает старое содержимое destwin.
Чтобы получить более тонкий контроль над копируемой областью, можно использовать вторую форму
overwrite()
. sminrow и smincol - это верхне-левые координаты исходного окна, остальные переменные обозначают прямоугольник в окне назначения.
- window.putwin(file)¶
Записывает все данные, связанные с окном, в предоставленный файловый объект. Позже эту информацию можно будет извлечь с помощью функции
getwin()
.
- window.redrawln(beg, num)¶
Указывает, что num строк экрана, начиная со строки beg, повреждены и должны быть полностью перерисованы при следующем вызове
refresh()
.
- window.redrawwin()¶
Коснитесь всего окна, в результате чего оно будет полностью перерисовано при следующем вызове
refresh()
.
- window.refresh([pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol])¶
Немедленное обновление экрана (синхронизация реального экрана с предыдущими методами рисования/удаления).
6 дополнительных аргументов могут быть указаны только в том случае, если окно является пэдом, созданным с помощью
newpad()
. Дополнительные параметры нужны для того, чтобы указать, какая часть пада и экрана задействована. pminrow и pmincol задают верхний левый угол прямоугольника, который будет отображаться в паде. sminrow, smincol, smaxrow и smaxcol указывают края прямоугольника, который будет отображаться на экране. Правый нижний угол прямоугольника, который будет отображаться в паде, вычисляется по экранным координатам, так как прямоугольники должны быть одинакового размера. Оба прямоугольника должны полностью помещаться в соответствующие структуры. Отрицательные значения pminrow, pmincol, sminrow или smincol рассматриваются как нулевые.
- window.resize(nlines, ncols)¶
Перераспределяет память для окна curses, чтобы привести его размеры к указанным значениям. Если один из размеров больше текущих значений, данные окна заполняются пустым пространством, в которое сливается текущее фоновое изображение (заданное значением
bkgdset()
).
- window.scroll([lines=1])¶
Прокрутите экран или область прокрутки вверх на * строк* строк.
- window.scrollok(flag)¶
Управляет тем, что происходит, когда курсор окна перемещается за край окна или области прокрутки, либо в результате действия новой строки в нижней строке, либо при вводе последнего символа последней строки. Если флаг равен
False
, курсор остается на нижней строке. Если флаг равенTrue
, окно прокручивается на одну строку вверх. Обратите внимание, что для получения эффекта физической прокрутки на терминале необходимо также вызватьidlok()
.
- window.setscrreg(top, bottom)¶
Установите область прокрутки от строки top до строки bottom. Все действия при прокрутке будут происходить в этой области.
- window.standend()¶
Отключите выделяющийся атрибут. На некоторых терминалах это имеет побочный эффект отключения всех атрибутов.
- window.standout()¶
Включите атрибут A_STANDOUT.
- window.subpad(begin_y, begin_x)¶
- window.subpad(nlines, ncols, begin_y, begin_x)
Возвращает вложенное окно, левый верхний угол которого находится в точке
(begin_y, begin_x)
, а ширина/высота равна ncols/nlines.
- window.subwin(begin_y, begin_x)¶
- window.subwin(nlines, ncols, begin_y, begin_x)
Возвращает вложенное окно, левый верхний угол которого находится в точке
(begin_y, begin_x)
, а ширина/высота равна ncols/nlines.По умолчанию вложенное окно будет простираться от указанной позиции до правого нижнего угла окна.
- window.syncdown()¶
Коснитесь каждого места в окне, которое было затронуто в любом из его окон-предков. Эта процедура вызывается
refresh()
, поэтому практически никогда не требуется вызывать ее вручную.
- window.syncok(flag)¶
Если flag равен
True
, тоsyncup()
вызывается автоматически при каждом изменении в окне.
- window.syncup()¶
Коснитесь всех мест в предках окна, которые были изменены в окне.
- window.timeout(delay)¶
Устанавливает блокирующее или неблокирующее чтение для окна. Если delay отрицательно, то используется блокирующее чтение (которое будет бесконечно ждать ввода). Если delay равно нулю, то используется неблокирующее чтение, и
getch()
будет возвращать-1
, если ввода не ожидается. Если delay положительно, тоgetch()
будет блокироваться на delay миллисекунд и вернет-1
, если по истечении этого времени ввода все еще нет.
- window.touchline(start, count[, changed])¶
Представьте, что количество строк было изменено, начиная со строки start. Если задано changed, то указывается, будут ли затронутые строки помечены как измененные (changed
=True
) или как неизмененные (changed=False
).
- window.touchwin()¶
Представьте, что все окно было изменено, в целях оптимизации рисования.
- window.untouchwin()¶
Пометьте все строки в окне как неизменные с момента последнего вызова
refresh()
.
- window.vline(ch, n[, attr])¶
- window.vline(y, x, ch, n[, attr])
Выведите вертикальную линию, начинающуюся в точке
(y, x)
, длиной n, состоящую из символов ch с атрибутами attr.
Константы¶
Модуль curses
определяет следующие члены данных:
- curses.ERR¶
Некоторые программы curses, возвращающие целое число, например
getch()
, при ошибке возвращаютERR
.
- curses.OK¶
Некоторые программы curses, возвращающие целое число, например
napms()
, в случае успеха возвращаютOK
.
- curses.version¶
- curses.__version__¶
Объект байта, представляющий текущую версию модуля.
- curses.ncurses_version¶
Именованный кортеж, содержащий три компонента версии библиотеки ncurses: major, minor и patch. Все значения являются целыми числами. К компонентам также можно обращаться по имени, поэтому
curses.ncurses_version[0]
эквивалентноcurses.ncurses_version.major
и так далее.Доступность: если используется библиотека ncurses.
Added in version 3.8.
- curses.COLORS¶
Максимальное количество цветов, которое может поддерживать терминал. Определяется только после вызова
start_color()
.
- curses.COLOR_PAIRS¶
Максимальное количество пар цветов, которое может поддерживать терминал. Определяется только после вызова
start_color()
.
- curses.COLS¶
Ширина экрана, т.е. количество столбцов. Определяется только после вызова
initscr()
. Обновляется с помощьюupdate_lines_cols()
,resizeterm()
иresize_term()
.
- curses.LINES¶
Высота экрана, т.е. количество строк. Определяется только после вызова
initscr()
. Обновляется с помощьюupdate_lines_cols()
,resizeterm()
иresize_term()
.
Для задания атрибутов ячеек символов доступны некоторые константы. Точные константы зависят от системы.
Атрибут |
Значение |
---|---|
|
Режим альтернативного набора символов |
|
Режим мигания |
|
Жирный режим |
|
Приглушенный режим |
|
Невидимый или пустой режим |
|
Режим курсива |
|
Обычный атрибут |
|
Защищенный режим |
|
Измените цвета фона и переднего плана |
|
Режим выделения |
|
Режим подчеркивания |
|
Горизонтальное выделение |
|
Левый блик |
|
Низкое освещение |
|
Правый блик |
|
Главная изюминка |
|
Вертикальное выделение |
Added in version 3.7: A_ITALIC
был добавлен.
Для извлечения соответствующих атрибутов, возвращаемых некоторыми методами, доступны несколько констант.
Битовая маска |
Значение |
---|---|
|
Битовая маска для извлечения атрибутов |
|
Битовая маска для извлечения символа |
|
Битовая маска для извлечения информации о поле цветовой пары |
Клавиши обозначаются целочисленными константами с именами, начинающимися с KEY_
. Точный набор клавиш зависит от системы.
Ключевая константа |
Ключ |
---|---|
|
Минимальное значение ключа |
|
Сломанный ключ (ненадежный) |
|
Стрелка вниз |
|
Стрелка вверх |
|
Левая стрелка |
|
Правая стрелка |
|
Клавиша «Домой» (стрелка вверх+влево) |
|
Backspace (ненадежно) |
|
Функциональные клавиши. Поддерживается до 64 функциональных клавиш. |
|
Значение функциональной клавиши n |
|
Удалить строку |
|
Вставить строку |
|
Удалить символ |
|
Вставить символ или войти в режим вставки |
|
Выход из режима вставки символов |
|
Чистый экран |
|
Очистить до конца экрана |
|
Очистить до конца строки |
|
Прокрутите 1 строку вперед |
|
Прокрутка на 1 строку назад (реверс) |
|
Следующая страница |
|
Предыдущая страница |
|
Установить вкладку |
|
Очистить вкладку |
|
Очистить все вкладки |
|
Ввод или отправка (ненадежно) |
|
Мягкий (частичный) сброс (ненадежный) |
|
Сброс или жесткая перезагрузка (ненадежно) |
|
Печать |
|
Дом внизу или в нижней части (слева внизу) |
|
Верхняя левая часть клавиатуры |
|
Правая верхняя часть клавиатуры |
|
Центр клавиатуры |
|
Нижняя левая часть клавиатуры |
|
Правая нижняя часть клавиатуры |
|
Задняя вкладка |
|
Beg (начало) |
|
Отмена |
|
Закрыть |
|
Cmd (команда) |
|
Копировать |
|
Создать |
|
Конец |
|
Выход |
|
Найти |
|
Помощь |
|
Марк |
|
Сообщение |
|
Переместить |
|
Следующий |
|
Открыть |
|
Опции |
|
Prev (предыдущий) |
|
Redo |
|
Ref (ссылка) |
|
Обновить |
|
Заменить |
|
Перезапустите |
|
Резюме |
|
Сохранить |
|
Shifted Beg (начало) |
|
Сдвинутая отмена |
|
Сдвинутое командование |
|
Сдвинутая копия |
|
Сдвинутое создание |
|
Сдвинутый символ Delete |
|
Сдвинутая линия удаления |
|
Выберите |
|
Сдвинутый конец |
|
Сдвинутая четкая линия |
|
Сдвинутый выход |
|
Сдвинутый поиск |
|
Сдвинутая помощь |
|
Сдвинутый дом |
|
Сдвинутый вход |
|
Сдвинутая стрелка влево |
|
Перемещенное сообщение |
|
Сдвинутый ход |
|
Сдвинутые дальше |
|
Сдвинутые опции |
|
Сдвинутый прев |
|
Сдвинутый принт |
|
Сдвинутая переделка |
|
Сменная замена |
|
Сдвинутая стрелка вправо |
|
Сменное резюме |
|
Сдвинутое сохранение |
|
Сдвинутая приостановка |
|
Сдвинутая отмена |
|
Приостановить |
|
Отменить |
|
Произошло событие мыши |
|
Событие изменения размера терминала |
|
Максимальное значение ключа |
На VT100 и их программных эмуляторах, таких как эмуляторы терминалов X, обычно доступно не менее четырех функциональных клавиш (KEY_F1
, KEY_F2
, KEY_F3
, KEY_F4
), а клавиши со стрелками сопоставлены с KEY_UP
, KEY_DOWN
, KEY_LEFT
и KEY_RIGHT
очевидным образом. Если на вашей машине установлена клавиатура ПК, можно ожидать наличия клавиш со стрелками и двенадцати функциональных клавиш (на старых клавиатурах ПК может быть только десять функциональных клавиш); кроме того, стандартными являются следующие отображения клавиатуры:
Ключница |
Постоянно |
---|---|
Insert |
KEY_IC |
Delete |
KEY_DC |
Home |
KEY_HOME |
End |
KEY_END |
Page Up |
KEY_PPAGE |
Page Down |
KEY_NPAGE |
В следующей таблице перечислены символы из альтернативного набора символов. Они унаследованы от терминала VT100 и обычно доступны в программных эмуляторах, таких как X-терминалы. Если графики нет, curses использует грубое приближение к печатному ASCII.
Примечание
Они доступны только после вызова initscr()
.
Код ACS |
Значение |
---|---|
|
альтернативное название для правого верхнего угла |
|
массивный квадратный блок |
|
доска квадратов |
|
альтернативное название горизонтальной линии |
|
альтернативное название для левого верхнего угла |
|
Альтернативное название для верхнего тройника |
|
нижняя футболка |
|
пуля |
|
Доска для игры в шашки (стиппл) |
|
стрелка, направленная вниз |
|
знак степени |
|
бриллиант |
|
больше-или-равно |
|
горизонтальная линия |
|
символ фонаря |
|
стрелка влево |
|
меньше, чем или равно |
|
левый нижний угол |
|
правый нижний угол |
|
левая футболка |
|
знак неравенства |
|
буква пи |
|
знак плюс или минус |
|
большой знак плюс |
|
стрелка вправо |
|
правая футболка |
|
строка сканирования 1 |
|
строка сканирования 3 |
|
строка сканирования 7 |
|
строка сканирования 9 |
|
альтернативное название для правого нижнего угла |
|
Альтернативное название для вертикальной линии |
|
Альтернативное название для правого тройника |
|
альтернативное название для левого нижнего угла |
|
Альтернативное название для нижнего тройника |
|
Альтернативное название для левого тройника |
|
Альтернативное название для кроссовера или большого плюса |
|
фунт стерлингов |
|
верхняя футболка |
|
стрелка вверх |
|
левый верхний угол |
|
правый верхний угол |
|
вертикальная линия |
В следующей таблице перечислены константы кнопок мыши, используемые getmouse()
:
Постоянная кнопка мыши |
Значение |
---|---|
|
Нажата кнопка мыши n |
|
Кнопка мыши n отпущена |
|
Нажата кнопка мыши n |
|
Двойное нажатие кнопки мыши n |
|
Тройное нажатие кнопки мыши n |
|
Во время изменения состояния кнопки переключатель был опущен. |
|
Управление было отключено во время изменения состояния кнопки |
|
Управление было отключено во время изменения состояния кнопки |
Изменено в версии 3.10: Константы BUTTON5_*
теперь открываются, если они предоставляются базовой библиотекой curses.
В следующей таблице перечислены предопределенные цвета:
Постоянно |
Цвет |
---|---|
|
Черный |
|
Голубой |
|
Циан (светлый зеленовато-голубой) |
|
Зеленый |
|
Пурпурный (пурпурно-красный) |
|
Красный |
|
Белый |
|
Желтый |
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
Курсор вверх; перемещение на одну строку вверх.
Операции перемещения ничего не делают, если курсор находится на краю, где перемещение невозможно. По возможности поддерживаются следующие синонимы:
Постоянно
Клавиши
Control-B
Control-F
Control-P
Control-N
Control-h
Все остальные нажатия клавиш воспринимаются как команда вставить заданный символ и переместиться вправо (с переворачиванием строки).
- gather()¶
Возвращает содержимое окна в виде строки; на то, будут ли включены пробелы в окне, влияет член
stripspaces
.
- stripspaces¶
Этот атрибут представляет собой флаг, который управляет интерпретацией пробелов в окне. Когда он включен, пробелы в конце каждой строки игнорируются; любое движение курсора, которое могло бы привести его к пробелу в конце строки, переходит к концу этой строки, а пробелы в конце строки удаляются при сборе содержимого окна.