curses — Обработка терминала для дисплеев с ячейками символов
Исходный код: Lib/curses
Модуль curses предоставляет интерфейс к библиотеке curses, фактическому стандарту для переносимой расширенной обработки терминала.
Хотя curses чаще всего используется в среде Unix, доступны версии для Windows, DOS и, возможно, других систем. Этот модуль расширения разработан для соответствия API ncurses, открытой библиотеке curses, размещенной в Linux и вариантах Unix BSD.
Примечание
Всякий раз, когда в документации упоминается символ, он может быть указан как целое число, строка Unicode длиной в один символ или строка байтов длиной в один байт.
Всякий раз, когда в документации упоминается строка символов, она может быть указана как строка Unicode или строка байтов.
См. также
-
Modulecurses.ascii -
Утилиты для работы с ASCII-символами независимо от настроек локали.
-
Modulecurses.panel -
Расширение стека панелей, которое добавляет глубину окнам curses.
-
Modulecurses.textpad -
Редактируемый виджет текста для curses, поддерживающий привязки в стиле Emacs.
- Программирование с использованием curses в Python
-
Материал по руководству по использованию curses с Python, написанный Эндрю Куклинг и Эриком Реймондом.
Директория Tools/demo/ в дистрибутиве исходного кода Python содержит несколько демонстрационных программ, использующих привязки curses, предоставляемые этим модулем.
Функции
Модуль curses определяет следующее исключение:
-
exception curses.error -
Исключение, поднимаемое, когда функция библиотеки curses возвращает ошибку.
Примечание
Всякий раз, когда аргументы x или y для функции или метода являются необязательными, они по умолчанию принимают значение текущих координат курсора. Всякий раз, когда attr является необязательным, он по умолчанию равен A_NORMAL.
Модуль curses определяет следующие функции:
-
curses.baudrate() -
Возвращает скорость вывода терминала в битах в секунду. В эмуляторах программных терминалов она будет иметь фиксированное высокое значение. Включено по историческим причинам; раньше использовалось для написания циклов вывода с задержками и иногда для изменения интерфейсов в зависимости от скорости линии.
-
curses.beep() -
Издает короткий звуковой сигнал.
-
curses.can_change_color() -
Возвращает
TrueилиFalse, в зависимости от того, может ли программист изменять цвета, отображаемые терминалом.
-
curses.cbreak() -
Переход в режим cbreak. В режиме cbreak (иногда называемом «редким» режимом) обычное буферирование строки tty выключается, и символы доступны для чтения по одному. Однако, в отличие от режима raw, специальные символы (прерывание, выход, приостановка и управление потоком) сохраняют свое действие на драйвере tty и вызывающей программе. Вызов сначала
raw(), а затемcbreak()оставляет терминал в режиме cbreak.
-
curses.color_content(color_number) -
Возвращает интенсивность красной, зеленой и синей (RGB) составляющих в цвете color_number, который должен быть между
0иCOLORS - 1. Возвращает кортеж из 3 элементов, содержащий значения R,G,B для данного цвета, которые будут между0(нет компоненты) и1000(максимальное количество компоненты).
-
curses.color_pair(pair_number) -
Возвращает значение атрибута для отображения текста в указанной паре цветов. Поддерживаются только первые 256 пар цветов. Это значение атрибута можно комбинировать с
A_STANDOUT,A_REVERSEи другимиA_*атрибутами.pair_number()является аналогом этой функции.
-
curses.curs_set(visibility) -
Устанавливает состояние курсора. visibility может быть установлен в
0,1, или2, для невидимого, нормального или очень видимого. Если терминал поддерживает запрошенную видимость, возвращает предыдущее состояние курсора; в противном случае поднимает исключение. На многих терминалах режим «видимый» — это подчеркнутый курсор, а режим «очень видимый» — курсор в виде блока.
-
curses.def_prog_mode() -
Сохраняет текущий режим терминала как режим «программы», режим, когда работающая программа использует curses. (Его аналогом является режим «оболочки», когда программа не использует 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() -
Возвращает текущий символ стирания пользователя в виде объекта 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 — значение 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 или выше.
Новое в версии 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() -
Инициализация библиотеки. Возвращает объект окно, представляющий весь экран.
Примечание
Если при открытии терминала возникает ошибка, подлежащая библиотека 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) — это объект типа bytes, состоящий из префиксаb'M-'и имени соответствующего символа ASCII.
-
curses.killchar() -
Возвращает текущий символ удаления строки пользователя как объект типа bytes длиной в один байт. Под Unix-подобными операционными системами это свойство управляющего tty программы curses, и оно не устанавливается самой библиотекой curses.
-
curses.longname() -
Возвращает объект типа bytes, содержащий поле long name terminfo, описывающее текущий терминал. Максимальная длина подробного описания — 128 символов. Оно определяется только после вызова
initscr().
-
curses.meta(flag) -
Если flag равно
True, допускаются ввод 8-битных символов. Если flag равноFalse, допускаются только 7-битные символы.
-
curses.mouseinterval(interval) -
Устанавливает максимальное время в миллисекундах, которое может пройти между событиями нажатия и отпускания, чтобы они распознавались как щелчок, и возвращает предыдущее значение интервала. Значение по умолчанию составляет 200 миллисекунд, или одна пятая секунды.
-
curses.mousemask(mousemask) -
Устанавливает события мыши, которые должны отслеживаться, и возвращает кортеж
(availmask, oldmask). availmask указывает, какие из указанных событий мыши могут быть зарегистрированы; при полной неудаче возвращает0. oldmask — предыдущее значение маски событий мыши данного окна. Если эта функция никогда не вызывалась, события мыши никогда не регистрируются.
-
curses.napms(ms) -
Отдых на ms миллисекунд.
-
curses.newpad(nlines, ncols) -
Создаёт и возвращает указатель на новую структуру данных пакета с заданным количеством строк и столбцов. Возвращает пакет как объект окна.
Пакет похож на окно, за исключением того, что он не ограничен размером экрана и не обязательно связан с конкретной частью экрана. Пакеты могут использоваться, когда требуется большое окно, и только часть окна будет отображаться на экране в данный момент. Автоматическое обновление пакетов (например, при прокрутке или эхо-отражении ввода) не происходит. Методы
refresh()иnoutrefresh()пакета требуют 6 аргументов для указания части пакета, которая должна отображаться, и расположения на экране, которое должно использоваться для отображения. Аргументы — pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol; аргументы p относятся к левому верхнему углу области пакета, которая должна отображаться, а аргументы s определяют область обрезки на экране, в пределах которой должна отображаться область пакета.
-
curses.newwin(nlines, ncols) - curses.newwin(nlines, ncols, begin_y, begin_x)
-
Возвращает новое окно, верхний левый угол которого находится в
(begin_y, begin_x), а высота/ширина — nlines/ncols.По умолчанию окно будет простираться от указанной позиции до правого нижнего угла экрана.
-
curses.nl() -
Вход в режим новой строки. В этом режиме нажатие клавиши возврата переводится в новую строку при вводе и переводится в возврат и перевод строки при выводе. Режим новой строки включен по умолчанию.
-
curses.nocbreak() -
Выход из режима cbreak. Возвращение в обычный «сырой» режим с буферизацией строк.
-
curses.noecho() -
Выход из режима эха. Ввод символов не отображается.
-
curses.nonl() -
Выход из режима перевода новой строки. Отключить перевод возврата каретки в новую строку на вводе и отключение низкоуровневого перевода новой строки в новую строку/возврат каретки на выводе (но это не меняет поведение
addch('\n'), которое всегда выполняет эквивалент возврата каретки и подачи символа перевода строки на виртуальном экране). При отключении перевода библиотека curses может немного ускорить вертикальное перемещение; также она сможет распознать клавишу возврата каретки на вводе.
-
curses.noqiflush() -
Когда используется процедура
noqiflush(), нормальная очистка очередей ввода и вывода, связанных с символамиINTR,QUITиSUSP, не будет выполнена. Возможно, вам понадобится вызватьnoqiflush()в обработчике сигнала, если вы хотите, чтобы вывод продолжался так, как будто прерывание не произошло, после выхода из обработчика.
-
curses.noraw() -
Выход из сырого режима. Возврат в нормальный «обработанный» режим с буферизацией строк.
-
curses.pair_content(pair_number) -
Возвращает кортеж
(fg, bg)содержащий цвета для запрошенной пары цветов. Значение pair_number должно быть между0иCOLOR_PAIRS - 1.
-
curses.pair_number(attr) -
Возвращает номер пары цветов, установленной атрибутом attr.
color_pair()является обратной функцией к этой функции.
-
curses.putp(str) -
Эквивалентно
tputs(str, 1, putchar); выводит значение указанной возможности terminfo для текущего терминала. Обратите внимание, что выводputp()всегда направляется в стандартный вывод.
-
curses.qiflush([flag]) -
Если flag равно
False, эффект тот же, что и при вызовеnoqiflush(). Если flag равноTrue, или аргумент не указан, очереди будут очищены при чтении этих управляющих символов.
-
curses.raw() -
Вход в сырой режим. В сыром режиме отключается обычная буферизация строк и обработка прерываний, клавиш выхода, приостановки и управления потоком; символы передаются функциям ввода curses по одному.
-
curses.reset_prog_mode() -
Восстанавливает терминал в «программный» режим, как ранее сохранил
def_prog_mode().
-
curses.reset_shell_mode() -
Восстанавливает терминал в «оболочечный» режим, как ранее сохранил
def_shell_mode().
-
curses.resetty() -
Восстанавливает состояние режимов терминала до состояния, которое было при последнем вызове
savetty().
-
curses.resize_term(nlines, ncols) -
Функция бэкенда, используемая
resizeterm(), выполняет большую часть работы; при изменении размеров оконresize_term()заполняет расширенные области пробелами. Приложение должно заполнить эти области соответствующими данными. Функцияresize_term()пытается изменить размер всех окон. Однако из-за соглашения о вызове для страниц невозможно изменить их размер без дополнительного взаимодействия с приложением.
-
curses.resizeterm(nlines, ncols) -
Изменяет размеры стандартного и текущих окон до указанных размеров и корректирует другие служебные данные, используемые библиотекой curses, которые записывают размеры окна (в частности, обработчик SIGWINCH).
-
curses.savetty() -
Сохраняет текущее состояние режимов терминала в буфере, который можно использовать с
resetty().
-
curses.get_escdelay() -
Извлекает значение, установленное
set_escdelay().Введено в версии 3.9.
-
curses.set_escdelay(ms) -
Устанавливает количество миллисекунд, которое нужно ожидать после чтения управляющего символа, чтобы отличить отдельный символ escape, введенный с клавиатуры, от последовательностей escape, отправленных курсором и функциональными клавишами.
Введено в версии 3.9.
-
curses.get_tabsize() -
Возвращает значение, установленное
set_tabsize().Введено в версии 3.9.
-
curses.set_tabsize(size) -
Устанавливает количество столбцов, используемых библиотекой curses при преобразовании символа табуляции в пробелы при добавлении табуляции в окно.
Введено в версии 3.9.
-
curses.setsyx(y, x) -
Устанавливает курсор виртуального экрана в позицию y, x. Если y и x оба равны
-1, тоleaveokустанавливаетсяTrue.
-
curses.setupterm(term=None, fd=- 1) -
Инициализирует терминал. term — это строка, содержащая имя терминала, или
None; если опущено илиNone, будет использовано значение переменной окруженияTERM. fd — это дескриптор файла, в который будут отправлены все инициализирующие последовательности; если не указано или-1, будет использован дескриптор файла дляsys.stdout.
-
curses.start_color() -
Должен быть вызван, если программист хочет использовать цвета, и перед любым другим вызовом для работы с цветом. Хорошей практикой является вызов этой функции сразу после
initscr().start_color()инициализирует восемь основных цветов (чёрный, красный, зелёный, жёлтый, синий, пурпурный, голубой и белый), и две глобальные переменные в модулеcurses,COLORSиCOLOR_PAIRS, содержащие максимальное количество цветов и пар цветов, которые может поддерживать терминал. Также он восстанавливает цвета на терминале до значений, которые были при включении терминала.
-
curses.termattrs() -
Возвращает логическое ИЛИ всех атрибутов видео, поддерживаемых терминалом. Эта информация полезна, когда программе curses требуется полный контроль над отображением экрана.
-
curses.termname() -
Возвращает значение переменной окружения
TERM, как объект байтов, усечённый до 14 символов.
-
curses.tigetflag(capname) -
Возвращает значение булевой возможности, соответствующей имени возможности terminfo capname, как целое число. Возвращает значение
-1если capname не является булевой возможностью, или0если она отменена или отсутствует в описании терминала.
-
curses.tigetnum(capname) -
Возвращает значение числовой возможности, соответствующей имени возможности terminfo capname, как целое число. Возвращает значение
-2если capname не является числовой возможностью, или-1если она отменена или отсутствует в описании терминала.
-
curses.tigetstr(capname) -
Возвращает значение строковой возможности, соответствующей имени возможности terminfo capname, как объект байтов. Возвращает
Noneесли capname не является «строковой возможностью» terminfo, или она отменена или отсутствует в описании терминала.
-
curses.tparm(str[, ...]) -
Инициализирует объект байтов str предоставленными параметрами, где str должен быть параметризованной строкой, полученной из базы данных terminfo. Например,
tparm(tigetstr("cup"), 5, 3)может привести кb'\033[6;4H', точный результат зависит от типа терминала.
-
curses.typeahead(fd) -
Укажите, что дескриптор файла fd должен использоваться для проверки наличия ввода. Если fd равен
-1, проверка ввода не выполняется.Библиотека curses выполняет «оптимизацию обработки перевода строки» путём периодического поиска ввода в очереди ввода во время обновления экрана. Если входной данные найдены и они поступают с tty, текущее обновление откладывается до вызова refresh или doupdate, что позволяет быстрее реагировать на команды, набранные заранее. Данная функция позволяет указать другой дескриптор файла для проверки наличия ввода.
-
curses.unctrl(ch) -
Возвращает байтовый объект, представляющий удобочитаемое представление символа ch. Управляющие символы отображаются как знак возвратной каретки, после которого следует символ, например, как
b'^C'. Печатные символы остаются неизменными.
-
curses.ungetch(ch) -
Поместите ch в буфер, чтобы следующий вызов
getch()вернул его.Примечание
Только один символ ch может быть помещен в буфер, прежде чем будет вызван
getch().
-
curses.update_lines_cols() -
Обновляет переменные модуля
LINESиCOLS. Полезно для определения ручного изменения размера экрана.Введено в версии 3.5.
-
curses.unget_wch(ch) -
Поместите ch в буфер, чтобы следующий вызов
get_wch()вернул его.Примечание
Только один символ ch может быть помещен в буфер, прежде чем будет вызван
get_wch().Введено в версии 3.3.
-
curses.ungetmouse(id, x, y, z, bstate) -
Поместите событие
KEY_MOUSEв очередь ввода, связав с ним заданные данные состояния.
-
curses.use_env(flag) -
Если используется, эта функция должна вызываться перед
initscr()или newterm. Когда flag равноFalse, значения строк и столбцов, указанные в базе данных terminfo, будут использоваться, даже если переменные средыLINESиCOLUMNS(используются по умолчанию) установлены, или если curses работает в окне (в этом случае по умолчанию используется размер окна, еслиLINESиCOLUMNSне заданы).
-
curses.use_default_colors() -
Разрешить использование значений по умолчанию для цветов на терминалах, поддерживающих эту функцию. Используйте это для поддержки прозрачности в вашем приложении. Цвет по умолчанию назначен номеру цвета
-1. После вызова этой функцииinit_pair(x, curses.COLOR_RED, -1)инициализирует, например, цвет пары x для красного цвета переднего плана на фоновом цвете по умолчанию.
-
curses.wrapper(func, /, *args, **kwargs) -
Инициализирует curses и вызывает другой вызываемый объект func, который должен содержать остальную часть вашего приложения, использующего curses. Если приложение вызывает исключение, эта функция восстановит терминал в нормальное состояние перед повторным поднятием исключения и генерацией трассировки стека. Вызываемый объект func затем получает основное окно ‘stdscr’ в качестве первого аргумента, а также любые другие аргументы, переданные в
wrapper(). Перед вызовом func,wrapper()включает режим cbreak, отключает эхо, включает клавиатуру терминала и инициализирует цвета, если терминал поддерживает цвета. При выходе (как обычном, так и по исключению) он восстанавливает режим cooked, включает эхо и отключает клавиатуру терминала.
Объекты окон
Объекты окон, возвращаемые функциями 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. Попытка записи в нижний правый угол окна, подокна или области вывода приведет к исключению после вывода строки. - Ошибка в ncurses, бэкенде этого модуля Python, может привести к SegFault при изменении размеров окон. Это исправлено в ncurses-6.1-20190511. Если у вас более старая версия ncurses, вы можете избежать этой проблемы, если не вызываете
addstr()со строкой, содержащей встроенные символы перевода строки. Вместо этого вызовитеaddstr()для каждой строки по отдельности.
- Запись за пределами окна, подокна или области вывода вызывает
-
window.attroff(attr) -
Удаляет атрибут attr из набора атрибутов, применяемых к всем записям в текущем окне.
-
window.attron(attr) -
Добавляет атрибут attr к набору атрибутов, применяемых ко всем записям в текущем окне.
-
window.attrset(attr) -
Устанавливает набор атрибутов attr. Изначально этот набор
0(без атрибутов).
-
window.bkgd(ch[, attr]) -
Устанавливает фоновый символ окна в ch с атрибутами attr. Изменение затем применяется ко всем позициям символов в окне:
- Атрибут каждого символа в окне изменяется на новый фоновый атрибут.
- В тех позициях, где ранее был фоновый символ, он меняется на новый фоновый символ.
-
window.bkgdset(ch[, attr]) -
Устанавливает фоновый цвет окна. Фоновый цвет окна состоит из символа и любого сочетания атрибутов. Часть атрибутов фонового цвета объединяется (побитовое ИЛИ) со всеми символами, отличными от пробела, которые записываются в окно. Обе части фонового цвета (символ и атрибуты) объединяются с пробелами. Фоновый цвет становится свойством символа и перемещается вместе с символом при прокрутке и операциях вставки/удаления строк/символов.
-
window.border([ls[, rs[, ts[, bs[, tl[, tr[, bl[, br]]]]]]]]) -
Рисует рамку вокруг границ окна. Каждый параметр указывает символ, используемый для определенной части рамки; см. таблицу ниже для получения подробной информации.
Примечание
Значение
0для любого параметра приведет к использованию символа по умолчанию для этого параметра. Использование ключевых параметров невозможно. Значения по умолчанию приведены в таблице:Параметр
Описание
Значение по умолчанию
ls
Левая сторона
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.clear() -
Как и
erase(), но также вызывает перерисовку всего окна при следующем вызовеrefresh().
-
window.clearok(flag) -
Если flag равно
True, следующий вызовrefresh()очистит окно полностью.
-
window.clrtobot() -
Очистить область от курсора до конца окна: все строки ниже курсора удаляются, а затем выполняется эквивалент
clrtoeol().
-
window.clrtoeol() -
Очистить область от курсора до конца строки.
-
window.cursyncup() -
Обновить текущую позицию курсора всех предков окна для отражения текущей позиции курсора окна.
-
window.delch([y, x]) -
Удалить символ в позиции
(y, x).
-
window.deleteln() -
Удалить строку под курсором. Все последующие строки сдвигаются вверх на одну строку.
-
window.derwin(begin_y, begin_x) - window.derwin(nlines, ncols, begin_y, begin_x)
-
Сокращение от «derive window»,
derwin()эквивалентно вызовуsubwin(), за исключением того, что begin_y и begin_x относятся к началу окна, а не к всему экрану. Возвращает объект окна для созданного окна.
-
window.echochar(ch[, attr]) -
Добавить символ ch с атрибутом attr и немедленно вызвать
refresh()для окна.
-
window.enclose(y, x) -
Проверяет, содержатся ли заданные экранные координаты символа в данном окне, возвращая
TrueилиFalse. Это полезно для определения подмножества окон экрана, которые содержат местоположение события мыши.Изменено в версии 3.10: Ранее возвращало
1или0вместоTrueилиFalse.
-
window.encoding -
Кодировка, используемая для кодирования аргументов метода (строки и символы Юникода). Атрибут кодировки наследуется от родительского окна при создании дочернего окна, например, с помощью
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)
-
Считывает строку байтов от пользователя с примитивной возможностью редактирования строк.
-
window.getyx() -
Возвращает кортеж
(y, x)текущей позиции курсора относительно верхнего левого угла окна.
-
window.hline(ch, n) - window.hline(y, x, ch, n)
-
Отобразить горизонтальную линию, начинающуюся в позиции
(y, x)длиной n, состоящую из символа ch.
-
window.idcok(flag) -
Если flag равно
False, curses больше не будет использовать аппаратные возможности вставки/удаления символа терминала; если flag равноTrue, использование вставки и удаления символов разрешено. При первой инициализации curses использование вставки/удаления символов разрешено по умолчанию.
-
window.idlok(flag) -
Если flag равно
True,cursesбудет пытаться использовать аппаратные средства редактирования строк. В противном случае вставка/удаление строк отключены.
-
window.immedok(flag) -
Если flag равно
True, любое изменение изображения окна автоматически приводит к обновлению окна; вам больше не нужно вызыватьrefresh()самостоятельно. Однако это может значительно ухудшить производительность из-за многократных вызовов wrefresh. Этот параметр отключен по умолчанию.
-
window.inch([y, x]) -
Возвращает символ в заданной позиции в окне. Нижние 8 битов — собственно символ, а старшие биты — атрибуты.
-
window.insch(ch[, attr]) - window.insch(y, x, ch[, attr])
-
Отобразить символ ch в позиции
(y, x)с атрибутами attr, сдвигая строку от позиции x вправо на один символ.
-
window.insdelln(nlines) -
Вставить nlines строк в указанное окно над текущей строкой. Нижние nlines строк теряются. При отрицательном nlines удаляются nlines строк, начиная с той, что находится под курсором, и оставшиеся строки сдвигаются вверх. Нижние nlines строк очищаются. Текущая позиция курсора остается неизменной.
-
window.insertln() -
Вставить пустую строку под курсором. Все последующие строки сдвигаются вниз на одну строку.
-
window.insnstr(str, n[, attr]) - window.insnstr(y, x, str, n[, attr])
-
Вставить строку символов (столько символов, сколько поместится на строке) перед символом под курсором, до n символов. Если n равно нулю или отрицательно, вставляется вся строка. Все символы справа от курсора сдвигаются вправо, а самые правые символы в строке теряются. Позиция курсора не меняется (после перемещения на y, x, если указано).
-
window.insstr(str[, attr]) - window.insstr(y, x, str[, attr])
-
Вставить строку символов (столько символов, сколько поместится на строке) перед символом под курсором. Все символы справа от курсора сдвигаются вправо, а самые правые символы в строке теряются. Позиция курсора не меняется (после перемещения на y, x, если указано).
-
window.instr([n]) - window.instr(y, x[, n])
-
Возвращает объект байтов символов, извлечённых из окна, начиная с текущей позиции курсора или с y, x, если указано. Атрибуты символов удаляются. Если n указано,
instr()возвращает строку длиной не более n символов (исключая заключительный NUL).
-
window.is_linetouched(line) -
Возвращает
True, если указанная строка была изменена с момента последнего вызоваrefresh(); в противном случае возвращаетFalse. Возбуждает исключениеcurses.error, если line не является допустимым для данного окна.
-
window.is_wintouched() -
Возвращает
True, если указанное окно было изменено с момента последнего вызоваrefresh(); в противном случае возвращаетFalse.
-
window.keypad(flag) -
Если flag равно
True, последовательности escape, генерируемые некоторыми клавишами (клавишей управления, функциональными клавишами), будут интерпретироватьсяcurses. Если flag равноFalse, последовательности escape будут оставаться такими же в потоке ввода.
-
window.leaveok(flag) -
Если flag равно
True, курсор остаётся на месте при обновлении, а не находится в «позиции курсора». Это уменьшает перемещение курсора, где это возможно. Если возможно, курсор будет сделан невидимым. Если flag равноFalse, курсор всегда будет в «позиции курсора» после обновления.
-
window.move(new_y, new_x) -
Переместить курсор в
(new_y, new_x).
-
window.mvderwin(y, x) -
Переместить окно внутри его родительского окна. Экранные относительные параметры окна не изменяются. Эта процедура используется для отображения различных частей родительского окна в одном физическом положении на экране.
-
window.mvwin(new_y, new_x) -
Переместить окно так, чтобы его верхний левый угол находился в
(new_y, new_x).
-
window.nodelay(flag) -
Если flag равно
True,getch()будет неблокирующим.
-
window.notimeout(flag) -
Если flag равно
True, последовательности escape не будут ограничены по времени. Если flag равноFalse, после нескольких миллисекунд последовательность escape не будет интерпретироваться и останется в потоке ввода как есть.
-
window.noutrefresh() -
Помечает для обновления, но ждёт. Эта функция обновляет структуру данных, представляющую желаемое состояние окна, но не принуждает обновление физического экрана. Для этого вызовите
doupdate().
-
window.overlay(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol]) -
Наложить окно поверх destwin. Окна не обязательно должны быть одинакового размера, копируется только перекрывающаяся область. Эта копия не разрушительная, это означает, что текущий символ фона не перезаписывает старое содержимое destwin. Для получения точного управления копируемой областью, можно использовать вторую форму
overlay(). sminrow и smincol — координаты верхнего левого угла исходного окна, а другие переменные обозначают прямоугольник в окне назначения.
-
window.overwrite(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol]) -
Перезаписать окно поверх destwin. Окна не обязательно должны быть одинакового размера, в этом случае копируется только перекрывающаяся область. Эта копия разрушительная, это означает, что текущий символ фона перезаписывает старое содержимое destwin. Для получения точного управления копируемой областью, можно использовать вторую форму
overwrite(). sminrow и smincol — координаты верхнего левого угла исходного окна, а другие переменные обозначают прямоугольник в окне назначения.
-
window.putwin(file) -
Записать все данные, связанные с окном, в предоставленный объект файла. Эту информацию можно позже извлечь с помощью функции
getwin().
-
window.redrawln(beg, num) -
Указывает, что num строк экрана, начиная со строки beg, повреждены и должны быть полностью перерисованы при следующем вызове
refresh().
-
window.redrawwin() -
Затронуть всё окно, заставив его полностью перерисовать при следующем вызове
refresh().
-
window.refresh([pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol]) -
Немедленно обновить отображение (синхронизировать фактический экран с предыдущими методами рисования/удаления).
6 необязательных аргументов могут быть указаны только тогда, когда окно является панелью, созданной с помощью
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) -
Установить область прокрутки от строки top до строки bottom. Все действия прокрутки будут происходить в этой области.
-
window.standend() -
Отключить выделенный атрибут. На некоторых терминалах это приводит к отключению всех атрибутов.
-
window.standout() -
Включить атрибут A_STANDOUT.
-
window.subpad(begin_y, begin_x) - window.subpad(nlines, ncols, begin_y, begin_x)
-
Возвращает подокно, верхний левый угол которого находится в
(begin_y, begin_x), а ширина/высота которого равна ncols/nlines.
-
window.subwin(begin_y, begin_x) - window.subwin(nlines, ncols, begin_y, begin_x)
-
Возвращает подокно, верхний левый угол которого находится в
(begin_y, begin_x), а ширина/высота которого равна ncols/nlines.По умолчанию подокно будет простираться от указанной позиции до правого нижнего угла окна.
-
window.syncdown() -
Обрабатывает каждую позицию в окне, которая была обработана в любом из его родительских окон. Эта функция вызывается
refresh(), поэтому её обычно вызывать вручную не нужно.
-
window.syncok(flag) -
Если flag равно
True, тоsyncup()вызывается автоматически всякий раз, когда происходит изменение в окне.
-
window.syncup() -
Обрабатывает все позиции в родителях окна, которые были изменены в окне.
-
window.timeout(delay) -
Устанавливает поведение чтения для окна в режиме блокирования или неблокирования. Если delay отрицательно, используется блокирующее чтение (которое будет ждать неопределённо долго ввода). Если delay равно нулю, используется неблокирующее чтение, и
getch()вернёт-1, если ввод не ожидается. Если delay положительно, тоgetch()будет блокироваться на delay миллисекунд и вернёт-1, если ввода всё ещё нет по истечении этого времени.
-
window.touchline(start, count[, changed]) -
Предполагается, что count строк были изменены, начиная со строки start. Если changed указан, он определяет, помечены ли затронутые строки как изменённые (changed
=True) или неизменённые (changed=False).
-
window.touchwin() -
Предполагается, что всё окно было изменено для целей оптимизации отрисовки.
-
window.untouchwin() -
Помечает все строки в окне как неизменённые с момента последнего вызова
refresh().
-
window.vline(ch, n[, 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_. Точные доступные клавиши зависят от системы.
Ключевая константа | Ключ |
|---|---|
| Минимальное значение ключа |
| Ключ разрыва (ненадёжный) |
| Стрелка вниз |
| Стрелка вверх |
| Стрелка влево |
| Стрелка вправо |
| Кнопка «Домой» (стрелка вверх + влево) |
| Backspace (ненадёжный) |
| Функциональные клавиши. Поддерживается до 64 функциональных клавиш. |
| Значение функциональной клавиши n |
| Удалить строку |
| Вставить строку |
| Удалить символ |
| Вставить символ или включить режим вставки |
| Выход из режима вставки символа |
| Очистить экран |
| Очистить до конца экрана |
| Очистить до конца строки |
| Прокрутить на 1 строку вперёд |
| Прокрутить на 1 строку назад (обратная) |
| Следующая страница |
| Предыдущая страница |
| Установить табуляцию |
| Очистить табуляцию |
| Очистить все табуляции |
| Ввод или отправка (ненадёжный) |
| Мягкий (частичный) сброс (ненадёжный) |
| Сброс или жёсткий сброс (ненадёжный) |
| Печать |
| Вниз домой или низ (нижняя левая) |
| В верхней левой части цифрового блока |
| В верхней правой части цифрового блока |
| Центр цифрового блока |
| В нижней левой части цифрового блока |
| В нижней правой части цифрового блока |
| Обратная табуляция |
| Начало (beg) |
| Отмена |
| Закрыть |
| Команда (cmd) |
| Копировать |
| Создать |
| Конец |
| Выход |
| Найти |
| Помощь |
| Отметить |
| Сообщение |
| Переместить |
| Следующий |
| Открыть |
| Параметры |
| Предыдущий |
| Повторить |
| Ссылка (ref) |
| Обновить |
| Заменить |
| Перезапустить |
| Продолжить |
| Сохранить |
| Сдвинутое начало (sbeg) |
| Сдвинутая отмена |
| Сдвинутая команда |
| Сдвинутая копия |
| Сдвинутое создание |
| Сдвинутое удаление символа |
| Сдвинутое удаление строки |
| Выбрать |
| Конец со смещением |
| Очистить строку со смещением |
| Выход со смещением |
| Найти со смещением |
| Помощь со смещением |
| Домой со смещением |
| Вход со смещением |
| Левая стрелка со смещением |
| Сообщение со смещением |
| Перемещение со смещением |
| Следующий со смещением |
| Параметры со смещением |
| Предыдущий со смещением |
| Печать со смещением |
| Повторить со смещением |
| Заменить со смещением |
| Правая стрелка со смещением |
| Возобновить со смещением |
| Сохранить со смещением |
| Приостановить со смещением |
| Отменить со смещением |
| Приостановить |
| Отменить |
| Произошло событие мыши |
| Событие изменения размера терминала |
| Максимальное значение ключа |
На VT100 и их программных эмуляциях, таких как эмуляторы терминалов X, обычно доступны как минимум четыре функциональные клавиши (KEY_F1, KEY_F2, KEY_F3, KEY_F4), а клавиши со стрелками сопоставлены с KEY_UP, KEY_DOWN, KEY_LEFT и KEY_RIGHT очевидным образом. Если у вашей машины есть клавиатура PC, можно ожидать клавиши со стрелками и двенадцать функциональных клавиш (у старых клавиатур PC может быть только десять функциональных клавиш); также стандартны следующие сопоставления на клавиатуре:
Ключ | Константа |
|---|---|
Вставить | KEY_IC |
Удалить | KEY_DC |
Домой | KEY_HOME |
Конец | KEY_END |
Страница вверх | KEY_PPAGE |
Страница вниз | KEY_NPAGE |
В следующей таблице перечислены символы из альтернавного набора символов. Они унаследованы от терминала VT100 и, как правило, доступны в программных эмуляциях, таких как терминалы X. Если графического изображения нет, curses использует грубую печатную ASCII-аппроксимацию.
Примечание
Они доступны только после вызова initscr().
Код ACS | Значение |
|---|---|
| запасное имя для правого верхнего угла |
| сплошной квадратный блок |
| доска из квадратов |
| запасное имя для горизонтальной линии |
| запасное имя для левого верхнего угла |
| запасное имя для верхней Т-образной формы |
| нижняя Т-образная форма |
| пуля |
| шашечная доска (пунктирная) |
| стрелка, указывающая вниз |
| символ градуса |
| ромб |
| больше или равно |
| горизонтальная линия |
| символ фонаря |
| стрелка влево |
| меньше или равно |
| нижний левый угол |
| нижний правый угол |
| левая Т-образная форма |
| не равно |
| буква пи |
| плюс-минус |
| большой знак плюс |
| стрелка вправо |
| правая Т-образная форма |
| сканирующая строка 1 |
| сканирующая строка 3 |
| сканирующая строка 7 |
| сканирующая строка 9 |
| запасное имя для нижнего правого угла |
| запасное имя для вертикальной линии |
| запасное имя для правой Т-образной формы |
| запасное имя для нижнего левого угла |
| запасное имя для нижней Т-образной формы |
| запасное имя для левой Т-образной формы |
| запасное имя для перекрёстка или большого знака плюс |
| фунт стерлингов |
| верхняя Т-образная форма |
| стрелка вверх |
| верхний левый угол |
| верхний правый угол |
| вертикальная линия |
В следующей таблице перечислены константы кнопок мыши, используемые функцией getmouse():
Константа кнопки мыши | Значение |
|---|---|
| Нажата кнопка мыши n |
| Отпущена кнопка мыши n |
| Кнопка мыши n нажата |
| Кнопка мыши n дважды нажата |
| Кнопка мыши n трижды нажата |
| Клавиша Shift была нажата во время изменения состояния кнопки |
| Клавиша Control была нажата во время изменения состояния кнопки |
| Клавиша Control была нажата во время изменения состояния кнопки |
Изменено в версии 3.10: Константы BUTTON5_* теперь доступны, если они предоставлены библиотекой curses.
В следующей таблице перечислены предопределённые цвета:
Константа | Цвет |
|---|---|
| Чёрный |
| Синий |
| Сине-зелёный (голубой) |
| Зелёный |
| Пурпурный (пурпурно-красный) |
| Красный |
| Белый |
| Жёлтый |
© 2001–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.11/library/curses.html