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