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

curses.md

1915 строк · 87.2 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.0/library/curses.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `curses` – управление терминалом для символьных дисплеев89Модуль `curses` предоставляет интерфейс к библиотеке curses, де-факто стандарту для переносимой продвинутой обработки терминалов.1011Хотя curses чаще всего используется в среде Unix, существуют версии для DOS, OS/2 и, возможно, других систем. Этот модуль расширения спроектирован так, чтобы соответствовать API ncurses – библиотеки curses с открытым исходным кодом, работающей на Linux и BSD-версиях Unix.1213> **Примечание**14>15> Начиная с версии 5.4 библиотека ncurses решает, как интерпретировать не-ASCII данные, используя функцию `nl_langinfo`. Это означает, что в приложении необходимо вызвать [`locale.setlocale()`](https://python-all.ru/3.0/library/locale.html#locale.setlocale) и кодировать строки Unicode с помощью одной из доступных кодировок системы. В этом примере используется системная кодировка по умолчанию:16>17> ```python18> import locale19> locale.setlocale(locale.LC_ALL, '')20> code = locale.getpreferredencoding()21> ```22>23> Затем *code* используется как кодировка для вызовов [`str.encode()`](https://python-all.ru/3.0/library/stdtypes.html#str.encode).2425> **См. также**26>27> **Модуль [`curses.ascii`](https://python-all.ru/3.0/library/curses.ascii.html#module-curses.ascii)**28>29> Утилиты для работы с ASCII-символами, независимо от настроек локали.30>31> **Модуль [`curses.panel`](https://python-all.ru/3.0/library/curses.panel.html#module-curses.panel)**32>33> Расширение стека панелей, добавляющее глубину окнам curses.34>35> **Модуль `curses.textpad`**36>37> Виджет редактируемого текста для curses с поддержкой привязок, похожих на38>39> **Emacs**40>41> .42>43> **Модуль `curses.wrapper`**44>45> Вспомогательная функция для правильной настройки и сброса терминала при входе и выходе из приложения.46>47> **[*Программирование с curses в Python*](https://python-all.ru/3.0/howto/curses.html#curses-howto)**48>49> Учебный материал по использованию curses с Python, автор Эндрю Кучлинг и Эрик Рэймонд.50>51> Каталог `Demo/curses/` в дистрибутиве исходного кода Python содержит несколько примеров программ, использующих привязки curses, предоставляемые этим модулем.5253## Функции5455Модуль `curses` определяет следующее исключение:5657#### `[curses.error]exception curses.error`5859Исключение, возникающее, когда функция библиотеки curses возвращает ошибку.6061> **Примечание**62>63> Если аргументы *x* или *y* функции или метода необязательны, они по умолчанию равны текущему положению курсора. Если *attr* необязателен, он по умолчанию равен `A_NORMAL`.6465Модуль `curses` определяет следующие функции:6667#### `[curses.baudrate]curses.baudrate()`6869Возвращает скорость вывода терминала в битах в секунду. На программных эмуляторах терминала она будет иметь фиксированное высокое значение. Включено по историческим причинам; в прошлом использовалось для написания циклов вывода с временными задержками и иногда для изменения интерфейсов в зависимости от скорости линии.7071#### `[curses.beep]curses.beep()`7273Издаёт короткий звуковой сигнал.7475#### `[curses.can_change_color]curses.can_change_color()`7677Возвращает true или false в зависимости от того, может ли программист изменять цвета, отображаемые терминалом.7879#### `[curses.cbreak]curses.cbreak()`8081Включает режим cbreak. В режиме cbreak (иногда называемом режимом «rare») обычная построчная буферизация tty отключается и символы становятся доступными для посимвольного чтения. Однако, в отличие от raw-режима, специальные символы (прерывание, завершение, приостановка и управление потоком) сохраняют своё действие на драйвер tty и вызывающую программу. Вызов сначала8283[`raw()`](https://python-all.ru/3.0/library/curses.html#curses.raw)8485, а затем8687[`cbreak()`](https://python-all.ru/3.0/library/curses.html#curses.cbreak)8889оставляет терминал в режиме cbreak.9091#### `[curses.color_content]curses.color_content(color_number)`9293Возвращает интенсивность красного, зелёного и синего (RGB) компонентов цвета9495*color\_number*9697, который должен находиться в диапазоне от9899`0`100101до102103`COLORS`104105. Возвращается кортеж из трёх элементов, содержащий значения R, G, B для указанного цвета, которые будут находиться в диапазоне от106107`0`108109(нет компонента) до110111`1000`112113(максимальное значение компонента).114115#### `[curses.color_pair]curses.color_pair(color_number)`116117Возвращает значение атрибута для отображения текста указанным цветом. Это значение атрибута можно комбинировать с118119`A_STANDOUT`120121,122123`A_REVERSE`124125и другими атрибутами126127`A_*`128129.130131[`pair_number()`](https://python-all.ru/3.0/library/curses.html#curses.pair_number)132133является аналогом этой функции.134135#### `[curses.curs_set]curses.curs_set(visibility)`136137Устанавливает состояние курсора.138139*visibility*140141может быть установлен в 0, 1 или 2 для невидимого, нормального или очень видимого режима. Если терминал поддерживает запрошенную видимость, возвращается предыдущее состояние курсора; в противном случае возникает исключение. На многих терминалах режим «visible» – это подчёркнутый курсор, а режим «very visible» – блочный курсор.142143#### `[curses.def_prog_mode]curses.def_prog_mode()`144145Сохраняет текущий режим терминала как «программный» режим – режим, когда работающая программа использует curses. (Его аналог – «режим оболочки», когда программа не в curses.) Последующие вызовы146147[`reset_prog_mode()`](https://python-all.ru/3.0/library/curses.html#curses.reset_prog_mode)148149восстановят этот режим.150151#### `[curses.def_shell_mode]curses.def_shell_mode()`152153Сохраняет текущий режим терминала как «режим оболочки» – режим, когда работающая программа не использует curses. (Его аналог – «программный» режим, когда программа использует возможности curses.) Последующие вызовы154155[`reset_shell_mode()`](https://python-all.ru/3.0/library/curses.html#curses.reset_shell_mode)156157восстановят этот режим.158159#### `[curses.delay_output]curses.delay_output(ms)`160161Вставляет паузу в162163*ms*164165миллисекунд в выводе.166167#### `[curses.doupdate]curses.doupdate()`168169Обновляет физический экран. Библиотека curses хранит две структуры данных: одна представляет текущее содержимое физического экрана, а виртуальный экран – желаемое следующее состояние. Функция [`doupdate()`](https://python-all.ru/3.0/library/curses.html#curses.doupdate) обновляет физический экран, чтобы он соответствовал виртуальному.170171Виртуальный экран можно обновить вызовом `noutrefresh()` после выполнения операций записи, таких как `addstr()`, над окном. Обычный вызов `refresh()` – это просто `noutrefresh()`, за которым следует [`doupdate()`](https://python-all.ru/3.0/library/curses.html#curses.doupdate); если нужно обновить несколько окон, можно ускорить работу и, возможно, уменьшить мерцание экрана, выполнив вызовы `noutrefresh()` для всех окон, а затем один вызов [`doupdate()`](https://python-all.ru/3.0/library/curses.html#curses.doupdate).172173#### `[curses.echo]curses.echo()`174175Включает режим эхоповтора. В режиме эхоповтора каждый введённый символ отображается на экране по мере ввода.176177#### `[curses.endwin]curses.endwin()`178179Деинициализирует библиотеку и возвращает терминал в обычное состояние.180181#### `[curses.erasechar]curses.erasechar()`182183Возвращает текущий символ стирания пользователя. В операционных системах Unix это свойство управляющего tty программы curses и не устанавливается самой библиотекой curses.184185#### `[curses.filter]curses.filter()`186187Процедура188189[`filter()`](https://python-all.ru/3.0/library/functions.html#filter)190191, если используется, должна вызываться до вызова192193[`initscr()`](https://python-all.ru/3.0/library/curses.html#curses.initscr)194195. В результате этих вызовов LINES устанавливается в 1; возможности clear, cup, cud, cud1, cuu1, cuu, vpa отключаются; строка home устанавливается в значение cr. В результате курсор и обновления экрана ограничиваются текущей строкой. Это может использоваться для посимвольного редактирования строки, не затрагивая остальную часть экрана.196197#### `[curses.flash]curses.flash()`198199Мигает экраном. То есть переключает его в инверсный режим, а затем обратно через короткий интервал. Некоторые люди предпочитают такой «видимый звонок» звуковому сигналу внимания, который воспроизводит200201[`beep()`](https://python-all.ru/3.0/library/curses.html#curses.beep)202203.204205#### `[curses.flushinp]curses.flushinp()`206207Очищает все входные буферы. Отбрасывает любой упреждающий ввод, который был набран пользователем, но ещё не обработан программой.208209#### `[curses.getmouse]curses.getmouse()`210211После того как212213`getch()`214215возвращает216217`KEY_MOUSE`218219в качестве сигнала о событии мыши, следует вызвать этот метод для получения поставленного в очередь события мыши, представленного в виде кортежа из 5 элементов220221`(id, x, y, z, bstate)`222223.224225*id*226227– это идентификатор, используемый для различения нескольких устройств, а228229*x*230231,232233*y*234235,236237*z*238239– координаты события. (240241*z*242243в настоящее время не используется.)244245*bstate*246247– это целочисленное значение, биты которого устанавливаются для указания типа события и представляют собой побитовое ИЛИ одной или нескольких из следующих констант, где248249*n*250251– номер кнопки от 1 до 4:252253`BUTTONn_PRESSED`254255,256257`BUTTONn_RELEASED`258259,260261`BUTTONn_CLICKED`262263,264265`BUTTONn_DOUBLE_CLICKED`266267,268269`BUTTONn_TRIPLE_CLICKED`270271,272273`BUTTON_SHIFT`274275,276277`BUTTON_CTRL`278279,280281`BUTTON_ALT`282283.284285#### `[curses.getsyx]curses.getsyx()`286287Возвращает текущие координаты виртуального курсора экрана по осям y и x. Если leaveok в данный момент равно true, возвращается -1,-1.288289#### `[curses.getwin]curses.getwin(file)`290291Читает данные окна, сохранённые в файле предыдущим вызовом292293`putwin()`294295. Затем процедура создаёт и инициализирует новое окно с использованием этих данных и возвращает объект нового окна.296297#### `[curses.has_colors]curses.has_colors()`298299Возвращает true, если терминал может отображать цвета; в противном случае возвращает false.300301#### `[curses.has_ic]curses.has_ic()`302303Возвращает true, если терминал поддерживает возможности вставки и удаления символов. Эта функция включена только по историческим причинам, так как все современные программные эмуляторы терминалов обладают такими возможностями.304305#### `[curses.has_il]curses.has_il()`306307Возвращает true, если терминал поддерживает возможности вставки и удаления строк или может имитировать их с помощью областей прокрутки. Эта функция включена только по историческим причинам, так как все современные программные эмуляторы терминалов обладают такими возможностями.308309#### `[curses.has_key]curses.has_key(ch)`310311Принимает значение клавиши312313*ch*314315и возвращает true, если текущий тип терминала распознаёт клавишу с таким значением.316317#### `[curses.halfdelay]curses.halfdelay(tenths)`318319Используется для режима половинной задержки (half-delay), который похож на режим cbreak в том, что вводимые пользователем символы сразу становятся доступны программе. Однако после блокировки на320321*tenths*322323десятых долей секунды генерируется исключение, если ничего не было введено. Значение324325*tenths*326327должно быть числом от 1 до 255. Используйте328329[`nocbreak()`](https://python-all.ru/3.0/library/curses.html#curses.nocbreak)330331для выхода из режима половинной задержки.332333#### `[curses.init_color]curses.init_color(color_number, r, g, b)`334335Изменяет определение цвета, принимая номер цвета, который нужно изменить, за которым следуют три значения RGB (количество красного, зелёного и синего компонентов). Значение336337*color\_number*338339должно быть между340341`0`342343и344345`COLORS`346347. Каждое из348349*r*350351,352353*g*354355,356357*b*358359должно быть значением между360361`0`362363и364365`1000`366367. При использовании368369[`init_color()`](https://python-all.ru/3.0/library/curses.html#curses.init_color)370371все вхождения этого цвета на экране немедленно меняются на новое определение. На большинстве терминалов эта функция ничего не делает; она активна, только если372373[`can_change_color()`](https://python-all.ru/3.0/library/curses.html#curses.can_change_color)374375возвращает376377`1`378379.380381#### `[curses.init_pair]curses.init_pair(pair_number, fg, bg)`382383Изменяет определение цветовой пары. Принимает три аргумента: номер изменяемой цветовой пары, номер цвета переднего плана и номер цвета фона. Значение384385*pair\_number*386387должно быть между388389`1`390391и392393`COLOR_PAIRS - 1`394395(цветовая пара396397`0`398399жёстко задана как белый на чёрном и не может быть изменена). Значения аргументов400401*fg*402403и404405*bg*406407должны быть между408409`0`410411и412413`COLORS`414415. Если цветовая пара была ранее инициализирована, экран обновляется и все вхождения этой цветовой пары меняются на новое определение.416417#### `[curses.initscr]curses.initscr()`418419Инициализирует библиотеку. Возвращает `WindowObject`, представляющий весь экран.420421> **Примечание**422>423> Если при открытии терминала возникает ошибка, базовая библиотека curses может вызвать завершение интерпретатора.424425#### `[curses.isendwin]curses.isendwin()`426427Возвращает true, если был вызван428429[`endwin()`](https://python-all.ru/3.0/library/curses.html#curses.endwin)430431(то есть библиотека curses была деинициализирована).432433#### `[curses.keyname]curses.keyname(k)`434435Возвращает имя клавиши с номером436437*k*438439. Имя клавиши, генерирующей печатный символ ASCII, совпадает с этим символом. Имя управляющей комбинации клавиш – это строка из двух символов: знак ^, за которым следует соответствующий печатный символ ASCII. Имя комбинации с клавишей Alt (128–255) – это строка с префиксом «M-», за которым следует имя соответствующего символа ASCII.440441#### `[curses.killchar]curses.killchar()`442443Возвращает текущий символ удаления строки пользователя. В операционных системах Unix это свойство управляющего tty программы curses и не устанавливается самой библиотекой curses.444445#### `[curses.longname]curses.longname()`446447Возвращает строку, содержащую длинное название terminfo, описывающее текущий терминал. Максимальная длина подробного описания – 128 символов. Она определена только после вызова448449[`initscr()`](https://python-all.ru/3.0/library/curses.html#curses.initscr)450451.452453#### `[curses.meta]curses.meta(yes)`454455Если456457*yes*458459равно 1, разрешает ввод 8-битных символов. Если460461*yes*462463равно 0, разрешает только 7-битные символы.464465#### `[curses.mouseinterval]curses.mouseinterval(interval)`466467Устанавливает максимальное время в миллисекундах, которое может пройти между нажатием и отпусканием, чтобы событие было распознано как щелчок, и возвращает предыдущее значение интервала. Значение по умолчанию – 200 мс, или одна пятая секунды.468469#### `[curses.mousemask]curses.mousemask(mousemask)`470471Устанавливает, какие события мыши должны сообщаться, и возвращает кортеж472473`(availmask, oldmask)`474475.476477*availmask*478479указывает, какие из заданных событий мыши могут быть зарегистрированы; при полном сбое возвращает 0.480481*oldmask*482483– предыдущее значение маски событий мыши данного окна. Если эта функция ни разу не вызывалась, никакие события мыши не сообщаются.484485#### `[curses.napms]curses.napms(ms)`486487Приостанавливает выполнение на488489*ms*490491миллисекунд.492493#### `[curses.newpad]curses.newpad(nlines, ncols)`494495Создаёт и возвращает указатель на новую структуру данных pad с заданным количеством строк и столбцов. Pad возвращается как объект окна.496497Pad подобен окну, за исключением того, что он не ограничен размером экрана и не обязательно связан с определённой частью экрана. Pad можно использовать, когда требуется большое окно, а на экране одновременно отображается только его часть. Автоматического обновления pad (например, при прокрутке или эхо-выводе ввода) не происходит. Методы `refresh()` и `noutrefresh()` pad требуют 6 аргументов для указания отображаемой части pad и места на экране для отображения. Аргументы: pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol; аргументы p относятся к верхнему левому углу отображаемой области pad, а аргументы s определяют область отсечения на экране, в которой должна быть отображена область pad.498499#### `[curses.newwin]curses.newwin([nlines, ncols], begin_y, begin_x)`500501Возвращает новое окно, левый верхний угол которого находится в `(begin_y, begin_x)`, а его высота/ширина равна *nlines*/*ncols*.502503По умолчанию окно будет расширяться от указанной позиции до нижнего правого угла экрана.504505#### `[curses.nl]curses.nl()`506507Включает режим перевода строки. В этом режиме клавиша возврата каретки преобразуется в перевод строки при вводе, а перевод строки преобразуется в возврат каретки и перевод строки при выводе. Режим перевода строки изначально включен.508509#### `[curses.nocbreak]curses.nocbreak()`510511Выходит из режима cbreak. Возвращается к обычному «cooked»-режиму с буферизацией строк.512513#### `[curses.noecho]curses.noecho()`514515Выходит из режима эхопечати. Эхо-вывод вводимых символов отключается.516517#### `[curses.nonl]curses.nonl()`518519Выходит из режима новой строки. Отключает преобразование возврата каретки в новую строку при вводе и oтключает низкоуровневое преобразование новой строки в новую строку/возврат каретки при выводе (но это не меняет поведение520521`addch('\n')`522523, которая всегда выполняет eквивалент возврата каретки и перевода строки на виртуальном экране). При отключённом преобразовании curses иногда может немного ускорить вертикальное перемещение; кроме того, он сможет обнаруживать нажатие клавиши возврата каретки при вводе.524525#### `[curses.noqiflush]curses.noqiflush()`526527При использовании функции noqiflush обычная очистка очередей ввода и вывода, связанных с символами INTR, QUIT и SUSP, не выполняется. Возможно, стоит вызвать528529[`noqiflush()`](https://python-all.ru/3.0/library/curses.html#curses.noqiflush)530531в обработчике сигнала, если нужно, чтобы вывод продолжался так, как будто прерывания не было, после выхода из обработчика.532533#### `[curses.noraw]curses.noraw()`534535Выходит из режима raw. Возвращается к обычному «cooked»-режиму с буферизацией строк.536537#### `[curses.pair_content]curses.pair_content(pair_number)`538539Возвращает кортеж540541`(fg, bg)`542543, содержащий цвета для запрошенной цветовой пары. Значение544545*pair\_number*546547должно быть между548549`1`550551и552553`COLOR_PAIRS - 1`554555.556557#### `[curses.pair_number]curses.pair_number(attr)`558559Возвращает номер цветовой пары, заданной значением атрибута560561*attr*562563.564565[`color_pair()`](https://python-all.ru/3.0/library/curses.html#curses.color_pair)566567является аналогом этой функции.568569#### `[curses.putp]curses.putp(string)`570571Эквивалент572573`tputs(str, 1, putchar)`574575; выводит значение указанной возможности terminfo для текущего терминала. Обратите внимание, что вывод putp всегда направляется в стандартный вывод.576577#### `[curses.qiflush]curses.qiflush([flag])`578579Если580581*flag*582583равен false, эффект будет таким же, как при вызове584585[`noqiflush()`](https://python-all.ru/3.0/library/curses.html#curses.noqiflush)586587. Если588589*flag*590591равен true или аргумент не указан, очереди будут очищены при чтении этих управляющих символов.592593#### `[curses.raw]curses.raw()`594595Переход в необработанный режим. В необработанном режиме отключаются обычная буферизация строк и обработка клавиш прерывания, выхода, приостановки и управления потоком; символы передаются функциям ввода curses по одному.596597#### `[curses.reset_prog_mode]curses.reset_prog_mode()`598599Восстанавливает терминал в режим «program», как было ранее сохранено с помощью600601[`def_prog_mode()`](https://python-all.ru/3.0/library/curses.html#curses.def_prog_mode)602603.604605#### `[curses.reset_shell_mode]curses.reset_shell_mode()`606607Восстанавливает терминал в режим «shell», как было ранее сохранено с помощью608609[`def_shell_mode()`](https://python-all.ru/3.0/library/curses.html#curses.def_shell_mode)610611.612613#### `[curses.setsyx]curses.setsyx(y, x)`614615Устанавливает виртуальный курсор экрана в позицию616617*y*618619,620621*x*622623. Если624625*y*626627и628629*x*630631равны -1, то устанавливается leaveok.632633#### `[curses.setupterm]curses.setupterm([termstr, fd])`634635Инициализирует терминал.636637*termstr*638639– строка с именем терминала; если она опущена, используется значение переменной окружения TERM.640641*fd*642643– это файловый дескриптор, на который будут отправляться любые последовательности инициализации; если он не указан, используется файловый дескриптор для644645`sys.stdout`646647.648649#### `[curses.start_color]curses.start_color()`650651Должна быть вызвана, если программист хочет использовать цвета, и до вызова любой другой процедуры управления цветом. Рекомендуется вызывать эту процедуру сразу после [`initscr()`](https://python-all.ru/3.0/library/curses.html#curses.initscr).652653[`start_color()`](https://python-all.ru/3.0/library/curses.html#curses.start_color) инициализирует восемь основных цветов (чёрный, красный, зелёный, жёлтый, синий, пурпурный, голубой и белый) и две глобальные переменные в модуле `curses`, `COLORS` и `COLOR_PAIRS`, содержащие максимальное количество цветов и цветовых пар, которые поддерживает терминал. Также восстанавливает цвета на терминале до значений, которые были при его включении.654655#### `[curses.termattrs]curses.termattrs()`656657Возвращает логическое ИЛИ всех видеоатрибутов, поддерживаемых терминалом. Эта информация полезна, когда curses-программа требует полного контроля над внешним видом экрана.658659#### `[curses.termname]curses.termname()`660661Возвращает значение переменной окружения TERM, усечённое до 14 символов.662663#### `[curses.tigetflag]curses.tigetflag(capname)`664665Возвращает значение логической возможности, соответствующей имени возможности terminfo666667*capname*668669. Значение670671`-1`672673возвращается, если674675*capname*676677не является логической возможностью, или678679`0`680681, если она отменена или отсутствует в описании терминала.682683#### `[curses.tigetnum]curses.tigetnum(capname)`684685Возвращает значение числовой возможности, соответствующей имени возможности terminfo686687*capname*688689. Значение690691`-2`692693возвращается, если694695*capname*696697не является числовой возможностью, или698699`-1`700701, если она отменена или отсутствует в описании терминала.702703#### `[curses.tigetstr]curses.tigetstr(capname)`704705Возвращает значение строковой возможности, соответствующей имени возможности terminfo706707*capname*708709.710711`None`712713возвращается, если714715*capname*716717не является строковой возможностью, или она отменена или отсутствует в описании терминала.718719#### `[curses.tparm]curses.tparm(str[, ...])`720721Создаёт экземпляр строки722723*str*724725с переданными параметрами, где726727*str*728729должна быть параметризованной строкой из базы данных terminfo. Например,730731`tparm(tigetstr("cup"), 5, 3)`732733может дать734735`'\033[6;4H'`736737, точный результат зависит от типа терминала.738739#### `[curses.typeahead]curses.typeahead(fd)`740741Указывает, что файловый дескриптор *fd* должен использоваться для проверки упреждающего ввода. Если *fd* равен `-1`, то проверка упреждающего ввода не выполняется.742743Библиотека curses выполняет «оптимизацию прерывания строки» (line-breakout optimization), периодически проверяя упреждающий ввод\\nво время обновления экрана. Если ввод обнаружен и поступает с tty,\\nтекущее обновление откладывается до следующего вызова refresh или doupdate,\\nчто обеспечивает более быстрый ответ на заранее введённые команды. Эта функция\\nпозволяет указать другой файловый дескриптор для проверки упреждающего ввода.744745#### `[curses.unctrl]curses.unctrl(ch)`746747Возвращает строку, являющуюся печатным представлением символа748749*ch*750751. Управляющие символы отображаются как значок вставки (^), за которым следует символ, например752753`^C`754755. Печатные символы остаются без изменений.756757#### `[curses.ungetch]curses.ungetch(ch)`758759Помещает *ch* в очередь, чтобы следующий вызов `getch()` вернул его.760761> **Примечание**762>763> Только один *ch* может быть помещён до вызова `getch()`.764765#### `[curses.ungetmouse]curses.ungetmouse(id, x, y, z, bstate)`766767Помещает событие768769`KEY_MOUSE`770771во входную очередь, связывая с ним переданные данные состояния.772773#### `[curses.use_env]curses.use_env(flag)`774775Если используется, эту функцию следует вызывать перед776777[`initscr()`](https://python-all.ru/3.0/library/curses.html#curses.initscr)778779или newterm. Когда780781*flag*782783равен false, используются значения строк и столбцов, указанные в базе данных terminfo, даже если установлены переменные окружения784785**LINES**786787и788789**COLUMNS**790791(используемые по умолчанию), или если curses работает в окне (в этом случае поведение по умолчанию – использовать размер окна, если792793**LINES**794795и796797**COLUMNS**798799не установлены).800801#### `[curses.use_default_colors]curses.use_default_colors()`802803Разрешает использование значений по умолчанию для цветов на терминалах, поддерживающих эту возможность. Это позволяет поддерживать прозрачность в приложении. Цвет по умолчанию назначается номеру цвета -1. После вызова этой функции804805`init_pair(x, curses.COLOR_RED, -1)`806807инициализирует, например, цветовую пару808809*x*810811с красным цветом переднего плана на фоне по умолчанию.812813## Объекты окон814815Объекты окон, возвращаемые [`initscr()`](https://python-all.ru/3.0/library/curses.html#curses.initscr) и [`newwin()`](https://python-all.ru/3.0/library/curses.html#curses.newwin) выше, имеют следующие методы:816817#### `[curses.window.addch]window.addch([y, x], ch[, attr])`818819> **Примечание**820>821> Под *символом* подразумевается символ C (код ASCII), а не символ Python (строка длины 1). (Это замечание справедливо везде, где в документации упоминается символ.) Встроенная функция [`ord()`](https://python-all.ru/3.0/library/functions.html#ord) удобна для преобразования строк в коды.822823Рисует символ *ch* в позиции `(y, x)` с атрибутами *attr*, перезаписывая любой символ, ранее нарисованный в этой позиции. По умолчанию позиция символа и атрибуты берутся из текущих настроек объекта окна.824825#### `[curses.window.addnstr]window.addnstr([y, x], str, n[, attr])`826827Рисует не более828829*n*830831символов строки832833*str*834835в позиции836837`(y, x)`838839с атрибутами840841*attr*842843, перезаписывая всё, что было на экране ранее.844845#### `[curses.window.addstr]window.addstr([y, x], str[, attr])`846847Рисует строку848849*str*850851в позиции852853`(y, x)`854855с атрибутами856857*attr*858859, перезаписывая всё, что было на экране ранее.860861#### `[curses.window.attroff]window.attroff(attr)`862863Удаляет атрибут864865*attr*866867из набора «фоновых» атрибутов, применяемых ко всем записям в текущее окно.868869#### `[curses.window.attron]window.attron(attr)`870871Добавить атрибут872873*attr*874875из набора «фоновых» атрибутов, применяемых ко всем записям в текущее окно.876877#### `[curses.window.attrset]window.attrset(attr)`878879Устанавливает «фоновый» набор атрибутов в880881*attr*882883. Изначально этот набор равен 0 (нет атрибутов).884885#### `[curses.window.bkgd]window.bkgd(ch[, attr])`886887Задаёт фоновое свойство окна: символ *ch* с атрибутами *attr*. Затем это изменение применяется ко всем позициям символов в окне:888889- Атрибут каждого символа в окне изменяется на новый фоновый атрибут.890- Везде, где встречается прежний фоновый символ, он заменяется на новый фоновый символ.891892#### `[curses.window.bkgdset]window.bkgdset(ch[, attr])`893894Устанавливает фон окна. Фон окна состоит из символа и любой комбинации атрибутов. Атрибутная часть фона объединяется (по ИЛИ) со всеми непустыми символами, которые записываются в окно. Как символьная, так и атрибутная части фона объединяются с пробелами. Фон становится свойством символа и перемещается вместе с ним при прокрутке и операциях вставки/удаления строк и символов.895896#### `[curses.window.border]window.border([ls[, rs[, ts[, bs[, tl[, tr[, bl[, br]]]]]]]])`897898Рисует рамку по краям окна. Каждый параметр задаёт символ для определённой части рамки; подробнее см. таблицу ниже. Символы могут быть заданы как целые числа или как строки из одного символа.899900> **Примечание**901>902> Значение `0` для любого параметра приводит к использованию символа по умолчанию для этого параметра. Именованные параметры могут *не* быть использованы. Значения по умолчанию перечислены в этой таблице:903904| Параметр | Описание | Значение по умолчанию |905| --- | --- | --- |906| *ls* | Левая сторона | `ACS_VLINE` |907| *rs* | Правая сторона | `ACS_VLINE` |908| *ts* | Верх | `ACS_HLINE` |909| *bs* | Низ | `ACS_HLINE` |910| *tl* | Верхний левый угол | `ACS_ULCORNER` |911| *tr* | Верхний правый угол | `ACS_URCORNER` |912| *bl* | Нижний левый угол | `ACS_LLCORNER` |913| *br* | Нижний правый угол | `ACS_LRCORNER` |914915#### `[curses.window.box]window.box([vertch, horch])`916917Подобно918919[`border()`](https://python-all.ru/3.0/library/curses.html#curses.window.border)920921, но оба922923*ls*924925и926927*rs*928929являются930931*vertch*932933, а оба934935*ts*936937и bs являются938939*horch*940941. В этой функции всегда используются символы углов по умолчанию.942943#### `[curses.window.chgat]window.chgat([y, x][, num], attr)`944945Устанавливает атрибуты для946947*num*948949символов на текущей позиции курсора или на позиции950951`(y, x)`952953, если она указана. Если значение954955*num*956957не задано или958959*num*960961= -1, атрибут будет установлен для всех символов до конца строки. Эта функция не перемещает курсор. Изменённая строка помечается с помощью метода962963[`touchline()`](https://python-all.ru/3.0/library/curses.html#curses.window.touchline)964965, чтобы её содержимое было перерисовано при следующем обновлении окна.966967#### `[curses.window.clear]window.clear()`968969Подобно970971[`erase()`](https://python-all.ru/3.0/library/curses.html#curses.window.erase)972973, но также приводит к перерисовке всего окна при следующем вызове974975[`refresh()`](https://python-all.ru/3.0/library/curses.html#curses.window.refresh)976977.978979#### `[curses.window.clearok]window.clearok(yes)`980981Если982983*yes*984985равно 1, следующий вызов986987[`refresh()`](https://python-all.ru/3.0/library/curses.html#curses.window.refresh)988989полностью очистит окно.990991#### `[curses.window.clrtobot]window.clrtobot()`992993Стирает от курсора до конца окна: все строки ниже курсора удаляются, а затем выполняется действие, эквивалентное994995[`clrtoeol()`](https://python-all.ru/3.0/library/curses.html#curses.window.clrtoeol)996997.998999#### `[curses.window.clrtoeol]window.clrtoeol()`10001001Стирает от курсора до конца строки.10021003#### `[curses.window.cursyncup]window.cursyncup()`10041005Обновляет текущую позицию курсора всех родительских окон, чтобы отражать текущую позицию курсора данного окна.10061007#### `[curses.window.delch]window.delch([y, x])`10081009Удаляет символ на позиции10101011`(y, x)`10121013.10141015#### `[curses.window.deleteln]window.deleteln()`10161017Удаляет строку под курсором. Все следующие строки сдвигаются на одну строку вверх.10181019#### `[curses.window.derwin]window.derwin([nlines, ncols], begin_y, begin_x)`10201021Сокращение от «derive window» (производное окно),10221023[`derwin()`](https://python-all.ru/3.0/library/curses.html#curses.window.derwin)10241025– это то же самое, что вызов10261027[`subwin()`](https://python-all.ru/3.0/library/curses.html#curses.window.subwin)10281029, за исключением того, что10301031*begin\_y*10321033и10341035*begin\_x*10361037задаются относительно начала координат окна, а не относительно всего экрана. Возвращает оконный объект для производного окна.10381039#### `[curses.window.echochar]window.echochar(ch[, attr])`10401041Добавляет символ10421043*ch*10441045с атрибутом10461047*attr*10481049и сразу же вызывает10501051[`refresh()`](https://python-all.ru/3.0/library/curses.html#curses.window.refresh)10521053для окна.10541055#### `[curses.window.enclose]window.enclose(y, x)`10561057Проверяет, находится ли заданная пара экранных координат символьной ячейки (относительно экрана) внутри заданного окна, возвращает true или false. Это полезно для определения того, какое подмножество окон экрана содержит местоположение события мыши.10581059#### `[curses.window.erase]window.erase()`10601061Очищает окно.10621063#### `[curses.window.getbegyx]window.getbegyx()`10641065Возвращает кортеж10661067`(y, x)`10681069координат верхнего левого угла.10701071#### `[curses.window.getch]window.getch([y, x])`10721073Получить символ. Обратите внимание, что возвращаемое целое число10741075*не*10761077обязательно должно находиться в диапазоне ASCII: функциональные клавиши, клавиши цифровой клавиатуры и т.д. возвращают числа больше 256. В режиме без задержки возвращается -1, если нет ввода.10781079#### `[curses.window.getkey]window.getkey([y, x])`10801081Получает символ, возвращая строку вместо целого числа, как10821083[`getch()`](https://python-all.ru/3.0/library/curses.html#curses.window.getch)10841085делает. Функциональные клавиши, клавиши цифровой клавиатуры и тому подобное возвращают многобайтовую строку, содержащую имя клавиши. В режиме без задержки при отсутствии ввода генерируется исключение.10861087#### `[curses.window.getmaxyx]window.getmaxyx()`10881089Возвращает кортеж10901091`(y, x)`10921093высоты и ширины окна.10941095#### `[curses.window.getparyx]window.getparyx()`10961097Возвращает начальные координаты этого окна относительно его родительского окна в две целочисленные переменные y и x. Возвращает10981099`-1,-1`11001101, если у этого окна нет родителя.11021103#### `[curses.window.getstr]window.getstr([y, x])`11041105Читает строку от пользователя, с примитивной возможностью редактирования строки.11061107#### `[curses.window.getyx]window.getyx()`11081109Возвращает кортеж11101111`(y, x)`11121113текущей позиции курсора относительно верхнего левого угла окна.11141115#### `[curses.window.hline]window.hline([y, x], ch, n)`11161117Отображает горизонтальную линию, начинающуюся в точке11181119`(y, x)`11201121, длиной11221123*n*11241125, состоящую из символа11261127*ch*11281129.11301131#### `[curses.window.idcok]window.idcok(flag)`11321133Если11341135*flag*11361137равен false, curses перестаёт использовать аппаратные возможности вставки/удаления символов терминала; если11381139*flag*11401141равен true, вставка и удаление символов включаются. При первой инициализации curses использование вставки/удаления символов включено по умолчанию.11421143#### `[curses.window.idlok]window.idlok(yes)`11441145Если при вызове11461147*yes*11481149равен 1,11501151`curses`11521153попытается использовать аппаратные средства редактирования строк. В противном случае вставка/удаление строк отключаются.11541155#### `[curses.window.immedok]window.immedok(flag)`11561157Если11581159*flag*11601161равен true, любое изменение изображения окна автоматически приводит к его обновлению; больше не нужно вызывать11621163[`refresh()`](https://python-all.ru/3.0/library/curses.html#curses.window.refresh)11641165самостоятельно. Однако это может значительно снизить производительность из-за повторных вызовов wrefresh. Эта опция отключена по умолчанию.11661167#### `[curses.window.inch]window.inch([y, x])`11681169Возвращает символ в указанной позиции окна. Младшие 8 бит – это сам символ, а старшие биты – атрибуты.11701171#### `[curses.window.insch]window.insch([y, x], ch[, attr])`11721173Рисует символ11741175*ch*11761177в точке11781179`(y, x)`11801181с атрибутами11821183*attr*11841185, сдвигая строку от позиции11861187*x*11881189вправо на один символ.11901191#### `[curses.window.insdelln]window.insdelln(nlines)`11921193Вставляет11941195*nlines*11961197строк в указанное окно над текущей строкой.11981199*nlines*12001201нижних строк теряются. Для отрицательного12021203*nlines*12041205удаляет12061207*nlines*12081209строк, начиная с той, что под курсором, и сдвигает оставшиеся строки вверх.12101211*nlines*12121213нижних строк очищаются. Текущая позиция курсора остаётся прежней.12141215#### `[curses.window.insertln]window.insertln()`12161217Вставляет пустую строку под курсором. Все последующие строки сдвигаются вниз на 1 строку.12181219#### `[curses.window.insnstr]window.insnstr([y, x], str, n[, attr])`12201221Вставляет строку символов (столько символов, сколько помещается на строке) перед символом под курсором, до12221223*n*12241225символов. Если12261227*n*12281229равно нулю или отрицательно, вставляется вся строка. Все символы справа от курсора сдвигаются вправо, при этом крайние правые символы строки теряются. Позиция курсора не меняется (после перемещения в12301231*y*12321233,12341235*x*12361237, если указано).12381239#### `[curses.window.insstr]window.insstr([y, x], str[, attr])`12401241Вставляет строку символов (столько символов, сколько помещается на строке) перед символом под курсором. Все символы справа от курсора сдвигаются вправо, при этом крайние правые символы строки теряются. Позиция курсора не меняется (после перемещения в12421243*y*12441245,12461247*x*12481249, если указано).12501251#### `[curses.window.instr]window.instr([y, x][, n])`12521253Возвращает строку символов, извлечённую из окна, начиная с текущей позиции курсора или с12541255*y*12561257,12581259*x*12601261, если они указаны. Атрибуты из символов удаляются. Если указан12621263*n*12641265,12661267[`instr()`](https://python-all.ru/3.0/library/curses.html#curses.window.instr)12681269возвращает строку длиной не более12701271*n*12721273символов (без учёта завершающего NUL).12741275#### `[curses.window.is_linetouched]window.is_linetouched(line)`12761277Возвращает true, если указанная строка была изменена после последнего вызова12781279[`refresh()`](https://python-all.ru/3.0/library/curses.html#curses.window.refresh)12801281; иначе возвращает false. Возбуждает исключение12821283[`curses.error`](https://python-all.ru/3.0/library/curses.html#curses.error)12841285, если12861287*line*12881289недопустима для данного окна.12901291#### `[curses.window.is_wintouched]window.is_wintouched()`12921293Возвращает true, если указанное окно было изменено после последнего вызова12941295[`refresh()`](https://python-all.ru/3.0/library/curses.html#curses.window.refresh)12961297; иначе возвращает false.12981299#### `[curses.window.keypad]window.keypad(yes)`13001301Если13021303*yes*13041305равно 1, escape-последовательности, генерируемые некоторыми клавишами (цифровая клавиатура, функциональные клавиши), будут интерпретироваться модулем13061307`curses`13081309. Если13101311*yes*13121313равно 0, escape-последовательности останутся как есть во входном потоке.13141315#### `[curses.window.leaveok]window.leaveok(yes)`13161317Если *yes* равно 1, курсор остаётся на месте при обновлении, а не перемещается в «позицию курсора». Это уменьшает перемещение курсора, где это возможно. Если возможно, курсор будет сделан невидимым.13181319Если *yes* равно 0, курсор всегда будет находиться в «позиции курсора» после обновления.13201321#### `[curses.window.move]window.move(new_y, new_x)`13221323Перемещает курсор в13241325`(new_y, new_x)`13261327.13281329#### `[curses.window.mvderwin]window.mvderwin(y, x)`13301331Перемещает окно внутри его родительского окна. Экранно-зависимые параметры окна не изменяются. Эта процедура используется для отображения разных частей родительского окна на одной и той же физической позиции на экране.13321333#### `[curses.window.mvwin]window.mvwin(new_y, new_x)`13341335Перемещает окно так, чтобы его левый верхний угол находился в13361337`(new_y, new_x)`13381339.13401341#### `[curses.window.nodelay]window.nodelay(yes)`13421343Если13441345*yes*13461347равно13481349`1`13501351,13521353[`getch()`](https://python-all.ru/3.0/library/curses.html#curses.window.getch)13541355будет неблокирующим.13561357#### `[curses.window.notimeout]window.notimeout(yes)`13581359Если *yes* равно `1`, управляющие последовательности не будут подвергаться таймауту.13601361Если *yes* равно `0`, через несколько миллисекунд управляющая последовательность не будет интерпретироваться и останется во входном потоке как есть.13621363#### `[curses.window.noutrefresh]window.noutrefresh()`13641365Помечает для обновления, но ждёт. Эта функция обновляет структуру данных, представляющую желаемое состояние окна, но не принуждает к обновлению физического экрана. Для этого вызовите13661367[`doupdate()`](https://python-all.ru/3.0/library/curses.html#curses.doupdate)13681369.13701371#### `[curses.window.overlay]window.overlay(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol])`13721373Наложить окно поверх *destwin*. Окна необязательно должны быть одного размера – копируется только область пересечения. Это копирование неразрушающее, то есть текущий символ фона не перезаписывает старое содержимое *destwin*.13741375Для точного контроля над копируемой областью можно использовать вторую форму [`overlay()`](https://python-all.ru/3.0/library/curses.html#curses.window.overlay). *sminrow* и *smincol* – это координаты левого верхнего угла исходного окна, а остальные переменные задают прямоугольник в целевом окне.13761377#### `[curses.window.overwrite]window.overwrite(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol])`13781379Перезаписать окно поверх *destwin*. Окна необязательно должны быть одного размера – в этом случае копируется только область пересечения. Это копирование разрушающее, то есть текущий символ фона перезаписывает старое содержимое *destwin*.13801381Для точного контроля над копируемой областью можно использовать вторую форму [`overwrite()`](https://python-all.ru/3.0/library/curses.html#curses.window.overwrite). *sminrow* и *smincol* – это координаты левого верхнего угла исходного окна, а остальные переменные задают прямоугольник в целевом окне.13821383#### `[curses.window.putwin]window.putwin(file)`13841385Записывает все данные, связанные с окном, в переданный файловый объект. Эти данные можно позже извлечь с помощью функции13861387[`getwin()`](https://python-all.ru/3.0/library/curses.html#curses.getwin)13881389.13901391#### `[curses.window.redrawln]window.redrawln(beg, num)`13921393Указывает, что13941395*num*13961397строк экрана, начиная со строки13981399*beg*14001401, повреждены и должны быть полностью перерисованы при следующем вызове14021403[`refresh()`](https://python-all.ru/3.0/library/curses.html#curses.window.refresh)14041405.14061407#### `[curses.window.redrawwin]window.redrawwin()`14081409Помечает все окно как изменённое, что приводит к его полной перерисовке при следующем вызове14101411[`refresh()`](https://python-all.ru/3.0/library/curses.html#curses.window.refresh)14121413.14141415#### `[curses.window.refresh]window.refresh([pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol])`14161417Обновить отображение немедленно (синхронизировать фактический экран с предыдущими методами рисования/удаления).141814196 необязательных аргументов можно указывать только когда окно является pad'ом, созданным с помощью [`newpad()`](https://python-all.ru/3.0/library/curses.html#curses.newpad). Дополнительные параметры нужны, чтобы указать, какая часть pad'а и экрана задействована. *pminrow* и *pmincol* задают верхний левый угол прямоугольника, отображаемого в pad'е. *sminrow*, *smincol*, *smaxrow* и *smaxcol* задают границы прямоугольника, отображаемого на экране. Нижний правый угол прямоугольника, отображаемого в pad'е, вычисляется из координат экрана, поскольку прямоугольники должны быть одного размера. Оба прямоугольника должны полностью помещаться в своих структурах. Отрицательные значения *pminrow*, *pmincol*, *sminrow* или *smincol* считаются равными нулю.14201421#### `[curses.window.scroll]window.scroll([lines=1])`14221423Прокручивает экран или область прокрутки вверх на14241425*lines*14261427строк.14281429#### `[curses.window.scrollok]window.scrollok(flag)`14301431Управляет поведением при перемещении курсора окна за край окна или области прокрутки, будь то из-за перевода строки на нижней строке или ввода последнего символа последней строки. Если14321433*flag*14341435равен false, курсор остаётся на нижней строке. Если14361437*flag*14381439равен true, окно прокручивается на одну строку вверх. Обратите внимание, что для получения физического эффекта прокрутки на терминале также необходимо вызвать14401441[`idlok()`](https://python-all.ru/3.0/library/curses.html#curses.window.idlok)14421443.14441445#### `[curses.window.setscrreg]window.setscrreg(top, bottom)`14461447Установить область прокрутки от строки14481449*top*14501451до строки14521453*bottom*14541455. Все действия прокрутки будут происходить в этой области.14561457#### `[curses.window.standend]window.standend()`14581459Выключить атрибут выделения (standout). На некоторых терминалах это имеет побочный эффект выключения всех атрибутов.14601461#### `[curses.window.standout]window.standout()`14621463Включить атрибут14641465*A\_STANDOUT*14661467.14681469#### `[curses.window.subpad]window.subpad([nlines, ncols], begin_y, begin_x)`14701471Возвращает подокно, левый верхний угол которого находится в14721473`(begin_y, begin_x)`14741475, а ширина/высота равны14761477*ncols*14781479/14801481*nlines*14821483.14841485#### `[curses.window.subwin]window.subwin([nlines, ncols], begin_y, begin_x)`14861487Возвращает подокно, левый верхний угол которого находится в `(begin_y, begin_x)`, а ширина/высота равны *ncols*/*nlines*.14881489По умолчанию подокно будет простираться от указанной позиции до нижнего правого угла окна.14901491#### `[curses.window.syncdown]window.syncdown()`14921493Помечает каждую позицию в окне, которая была помечена в любом из его родительских окон. Эта процедура вызывается функцией14941495[`refresh()`](https://python-all.ru/3.0/library/curses.html#curses.window.refresh)14961497, поэтому практически никогда не требуется вызывать её вручную.14981499#### `[curses.window.syncok]window.syncok(flag)`15001501Если вызвана с15021503*flag*15041505, установленным в true, то15061507[`syncup()`](https://python-all.ru/3.0/library/curses.html#curses.window.syncup)15081509вызывается автоматически при каждом изменении в окне.15101511#### `[curses.window.syncup]window.syncup()`15121513Отмечает все позиции в предках окна, которые были изменены в этом окне.15141515#### `[curses.window.timeout]window.timeout(delay)`15161517Устанавливает блокирующее или неблокирующее чтение для окна. Если15181519*delay*15201521отрицательный, используется блокирующее чтение (оно будет ждать ввода неограниченно долго). Если15221523*delay*15241525равен нулю, используется неблокирующее чтение, и15261527[`getch()`](https://python-all.ru/3.0/library/curses.html#curses.window.getch)15281529вернёт -1, если ввода нет. Если15301531*delay*15321533положительный, то15341535[`getch()`](https://python-all.ru/3.0/library/curses.html#curses.window.getch)15361537будет блокировать выполнение на15381539*delay*15401541миллисекунд и вернёт -1, если по истечении этого времени ввод всё ещё отсутствует.15421543#### `[curses.window.touchline]window.touchline(start, count[, changed])`15441545Сообщает, что15461547*count*15481549строк были изменены, начиная со строки15501551*start*15521553. Если передан параметр15541555*changed*15561557, он указывает, помечены ли затронутые строки как изменённые (15581559*changed*15601561=1) или неизменённые (15621563*changed*15641565=0).15661567#### `[curses.window.touchwin]window.touchwin()`15681569Считает, что всё окно было изменено, в целях оптимизации отрисовки.15701571#### `[curses.window.untouchwin]window.untouchwin()`15721573Помечает все строки в окне как неизменённые после последнего вызова15741575[`refresh()`](https://python-all.ru/3.0/library/curses.html#curses.window.refresh)15761577.15781579#### `[curses.window.vline]window.vline([y, x], ch, n)`15801581Отображает вертикальную линию, начинающуюся в15821583`(y, x)`15841585, длиной15861587*n*15881589, состоящую из символа15901591*ch*15921593.15941595## Константы15961597Модуль `curses` определяет следующие элементы данных:15981599#### `[curses.ERR]curses.ERR`16001601Некоторые процедуры curses, возвращающие целое число, например16021603`getch()`16041605, в случае неудачи возвращают16061607[`ERR`](https://python-all.ru/3.0/library/curses.html#curses.ERR)16081609.16101611#### `[curses.OK]curses.OK`16121613Некоторые процедуры curses, возвращающие целое число, например16141615[`napms()`](https://python-all.ru/3.0/library/curses.html#curses.napms)16161617, в случае успеха возвращают16181619[`OK`](https://python-all.ru/3.0/library/curses.html#curses.OK)16201621.16221623#### `[curses.version]curses.version`16241625Строка, представляющая текущую версию модуля. Также доступно как16261627`__version__`16281629.16301631Доступно несколько констант для задания атрибутов символьных ячеек:16321633| Атрибут | Значение |1634| --- | --- |1635| `A_ALTCHARSET` | Режим альтернативной кодировки знаков. |1636| `A_BLINK` | Режим мерцания. |1637| `A_BOLD` | Режим полужирного начертания. |1638| `A_DIM` | Режим тусклого свечения. |1639| `A_NORMAL` | Обычный атрибут. |1640| `A_STANDOUT` | Режим выделения. |1641| `A_UNDERLINE` | Режим подчёркивания. |16421643На клавиши ссылаются целочисленные константы с именами, начинающимися с `KEY_`. Точный набор доступных клавиш зависит от системы.16441645| Константа клавиши | Клавиша |1646| --- | --- |1647| `KEY_MIN` | Минимальное значение клавиши |1648| `KEY_BREAK` | Клавиша Break (ненадёжно) |1649| `KEY_DOWN` | Стрелка вниз |1650| `KEY_UP` | Стрелка вверх |1651| `KEY_LEFT` | Стрелка влево |1652| `KEY_RIGHT` | Стрелка вправо |1653| `KEY_HOME` | Клавиша Home (стрелка вверх-влево) |1654| `KEY_BACKSPACE` | Backspace (ненадёжно) |1655| `KEY_F0` | Функциональные клавиши. Поддерживается до 64 функциональных клавиш. |1656| `KEY_Fn` | Значение функциональной клавиши *n* |1657| `KEY_DL` | Удалить строку |1658| `KEY_IL` | Вставить строку |1659| `KEY_DC` | Удалить символ |1660| `KEY_IC` | Вставить символ или войти в режим вставки |1661| `KEY_EIC` | Выйти из режима вставки символа |1662| `KEY_CLEAR` | Очистить экран |1663| `KEY_EOS` | Очистить до конца экрана |1664| `KEY_EOL` | Очистить до конца строки |1665| `KEY_SF` | Прокрутить на 1 строку вперёд |1666| `KEY_SR` | Прокрутка на 1 строку назад (обратное направление) |1667| `KEY_NPAGE` | Следующая страница |1668| `KEY_PPAGE` | Предыдущая страница |1669| `KEY_STAB` | Установить табуляцию |1670| `KEY_CTAB` | Очистить табуляцию |1671| `KEY_CATAB` | Очистить все табуляции |1672| `KEY_ENTER` | Ввод или отправка (ненадёжно) |1673| `KEY_SRESET` | Мягкий (частичный) сброс (ненадёжно) |1674| `KEY_RESET` | Сброс или жёсткий сброс (ненадёжно) |1675| `KEY_PRINT` | Печать |1676| `KEY_LL` | Домой вниз или нижняя строка (левый нижний) |1677| `KEY_A1` | Верхний левый угол клавиатуры |1678| `KEY_A3` | Верхний правый угол клавиатуры |1679| `KEY_B2` | Центр клавиатуры |1680| `KEY_C1` | Нижний левый угол клавиатуры |1681| `KEY_C3` | Нижний правый угол клавиатуры |1682| `KEY_BTAB` | Обратная табуляция |1683| `KEY_BEG` | Начало |1684| `KEY_CANCEL` | Отмена |1685| `KEY_CLOSE` | Закрыть |1686| `KEY_COMMAND` | Команда |1687| `KEY_COPY` | Копировать |1688| `KEY_CREATE` | Создать |1689| `KEY_END` | Конец |1690| `KEY_EXIT` | Выход |1691| `KEY_FIND` | Найти |1692| `KEY_HELP` | Помощь |1693| `KEY_MARK` | Отметка |1694| `KEY_MESSAGE` | Сообщение |1695| `KEY_MOVE` | Переместить |1696| `KEY_NEXT` | Далее |1697| `KEY_OPEN` | Открыть |1698| `KEY_OPTIONS` | Параметры |1699| `KEY_PREVIOUS` | Назад (предыдущий) |1700| `KEY_REDO` | Повторить |1701| `KEY_REFERENCE` | Справка (ссылка) |1702| `KEY_REFRESH` | Обновить |1703| `KEY_REPLACE` | Заменить |1704| `KEY_RESTART` | Перезапустить |1705| `KEY_RESUME` | Возобновить |1706| `KEY_SAVE` | Сохранить |1707| `KEY_SBEG` | Shift+Начало (начало) |1708| `KEY_SCANCEL` | Shift+Отмена |1709| `KEY_SCOMMAND` | Shift+Команда |1710| `KEY_SCOPY` | Shift+Копировать |1711| `KEY_SCREATE` | Shift+Создать |1712| `KEY_SDC` | Shift+Удалить символ |1713| `KEY_SDL` | Shift+Удалить строку |1714| `KEY_SELECT` | Выбор |1715| `KEY_SEND` | Shift+Конец |1716| `KEY_SEOL` | Shift+Очистка строки |1717| `KEY_SEXIT` | Сдвинутый Dxit |1718| `KEY_SFIND` | Shift+Найти |1719| `KEY_SHELP` | Shift+Справка |1720| `KEY_SHOME` | Shift+Начало |1721| `KEY_SIC` | Shift+Ввод |1722| `KEY_SLEFT` | Shift+Стрелка влево |1723| `KEY_SMESSAGE` | Shift+Сообщение |1724| `KEY_SMOVE` | Shift+Перемещение |1725| `KEY_SNEXT` | Shift+Далее |1726| `KEY_SOPTIONS` | Shift+Параметры |1727| `KEY_SPREVIOUS` | Shift+Назад |1728| `KEY_SPRINT` | Shift+Печать |1729| `KEY_SREDO` | Shift+Повтор |1730| `KEY_SREPLACE` | Замена с Shift |1731| `KEY_SRIGHT` | Стрелка вправо с Shift |1732| `KEY_SRSUME` | Возобновление с Shift |1733| `KEY_SSAVE` | Сохранение с Shift |1734| `KEY_SSUSPEND` | Приостановка с Shift |1735| `KEY_SUNDO` | Отмена с Shift |1736| `KEY_SUSPEND` | Приостановить |1737| `KEY_UNDO` | Отменить |1738| `KEY_MOUSE` | Событие мыши |1739| `KEY_RESIZE` | Событие изменения размера терминала |1740| `KEY_MAX` | Максимальное значение клавиши |17411742На VT100 и их программных эмуляциях, таких как эмуляторы терминала X, обычно доступны по меньшей мере четыре функциональные клавиши (`KEY_F1`, `KEY_F2`, `KEY_F3`, `KEY_F4`), а клавиши со стрелками отображаются на `KEY_UP`, `KEY_DOWN`, `KEY_LEFT` и `KEY_RIGHT` очевидным образом. Если используется клавиатура PC, можно рассчитывать на клавиши со стрелками и двенадцать функциональных клавиш (на старых клавиатурах PC может быть только десять функциональных клавиш); кроме того, стандартными являются следующие сопоставления цифровой клавиатуры:17431744| Клавиша | Константа |1745| --- | --- |1746| `Вставка` | KEY\_IC |1747| `Удаление` | KEY\_DC |1748| `Home` | KEY\_HOME |1749| `End` | KEY\_END |1750| `Page Up` | KEY\_NPAGE |1751| `Page Down` | KEY\_PPAGE |17521753В следующей таблице перечислены символы из альтернативного набора символов. Они унаследованы от терминала VT100 и обычно доступны в программных эмуляциях, таких как X терминалы. Если графический символ недоступен, curses использует грубое приближение в виде печатных символов ASCII.17541755> **Примечание**1756>1757> Доступны только после вызова [`initscr()`](https://python-all.ru/3.0/library/curses.html#curses.initscr).17581759| Код ACS | Значение |1760| --- | --- |1761| `ACS_BBSS` | альтернативное имя для правого верхнего угла |1762| `ACS_BLOCK` | сплошной квадратный блок |1763| `ACS_BOARD` | доска из квадратов |1764| `ACS_BSBS` | альтернативное имя для горизонтальной линии |1765| `ACS_BSSB` | альтернативное имя для левого верхнего угла |1766| `ACS_BSSS` | альтернативное имя для верхнего тройника |1767| `ACS_BTEE` | нижний тройник |1768| `ACS_BULLET` | маркер |1769| `ACS_CKBOARD` | шахматная доска (точечный узор) |1770| `ACS_DARROW` | стрелка вниз |1771| `ACS_DEGREE` | символ градуса |1772| `ACS_DIAMOND` | ромб |1773| `ACS_GEQUAL` | больше или равно |1774| `ACS_HLINE` | горизонтальная линия |1775| `ACS_LANTERN` | символ фонаря |1776| `ACS_LARROW` | стрелка влево |1777| `ACS_LEQUAL` | меньше или равно |1778| `ACS_LLCORNER` | левый нижний угол |1779| `ACS_LRCORNER` | правый нижний угол |1780| `ACS_LTEE` | левый тройник |1781| `ACS_NEQUAL` | знак не равно |1782| `ACS_PI` | буква пи |1783| `ACS_PLMINUS` | плюс-минус |1784| `ACS_PLUS` | большой плюс |1785| `ACS_RARROW` | стрелка вправо |1786| `ACS_RTEE` | правый тройник |1787| `ACS_S1` | линия развертки 1 |1788| `ACS_S3` | линия развертки 3 |1789| `ACS_S7` | линия развертки 7 |1790| `ACS_S9` | линия развертки 9 |1791| `ACS_SBBS` | альтернативное название правого нижнего угла |1792| `ACS_SBSB` | другое название вертикальной линии |1793| `ACS_SBSS` | альтернативное название правого тройника |1794| `ACS_SSBB` | альтернативное название левого нижнего угла |1795| `ACS_SSBS` | альтернативное название нижнего тройника |1796| `ACS_SSSB` | альтернативное название левого тройника |1797| `ACS_SSSS` | альтернативное название перекрестия или большого плюса |1798| `ACS_STERLING` | фунт стерлингов |1799| `ACS_TTEE` | верхний тройник |1800| `ACS_UARROW` | стрелка вверх |1801| `ACS_ULCORNER` | левый верхний угол |1802| `ACS_URCORNER` | правый верхний угол |1803| `ACS_VLINE` | вертикальная линия |18041805В следующей таблице перечислены предопределённые цвета:18061807| Константа | Цвет |1808| --- | --- |1809| `COLOR_BLACK` | Чёрный |1810| `COLOR_BLUE` | Синий |1811| `COLOR_CYAN` | Голубой (светлый сине-зелёный) |1812| `COLOR_GREEN` | Зелёный |1813| `COLOR_MAGENTA` | Пурпурный (красновато-фиолетовый) |1814| `COLOR_RED` | Красный |1815| `COLOR_WHITE` | Белый |1816| `COLOR_YELLOW` | Жёлтый |18171818# `curses.textpad` – виджет ввода текста для программ curses18191820Модуль `curses.textpad` предоставляет класс [`Textbox`](https://python-all.ru/3.0/library/curses.html#curses.textpad.Textbox), который выполняет базовое редактирование текста в окне curses, поддерживая набор сочетаний клавиш, напоминающий сочетания в Emacs (а также в Netscape Navigator, BBedit 6.x, FrameMaker и многих других программах). Модуль также предоставляет функцию рисования прямоугольников, полезную для обрамления текстовых полей или для других целей.18211822Модуль `curses.textpad` определяет следующую функцию:18231824#### `[curses.textpad.rectangle]curses.textpad.rectangle(win, uly, ulx, lry, lrx)`18251826Рисует прямоугольник. Первый аргумент должен быть оконным объектом; остальные аргументы – координаты относительно этого окна. Второй и третий аргументы – координаты y и x верхнего левого угла прямоугольника; четвёртый и пятый – координаты y и x нижнего правого угла. Прямоугольник рисуется с использованием символов псевдографики VT100/IBM PC на терминалах, которые это поддерживают (включая xterm и большинство других программных эмуляторов терминала). В противном случае он рисуется с помощью символов ASCII: дефисов, вертикальных черт и знаков плюс.18271828## Объекты Textbox18291830Можно создать экземпляр объекта [`Textbox`](https://python-all.ru/3.0/library/curses.html#curses.textpad.Textbox) следующим образом:18311832#### `[curses.textpad.Textbox]class curses.textpad.Textbox(win)`18331834Возвращает объект виджета текстового поля. Аргумент *win* должен быть объектом `WindowObject` curses, в котором будет размещено текстовое поле. Курсор редактирования текстового поля изначально находится в верхнем левом углу содержащего окна, с координатами `(0, 0)`. Флаг экземпляра [`stripspaces`](https://python-all.ru/3.0/library/curses.html#curses.textpad.Textbox.stripspaces) изначально включён.18351836Объекты [`Textbox`](https://python-all.ru/3.0/library/curses.html#curses.textpad.Textbox) имеют следующие методы:18371838#### `[curses.textpad.Textbox.edit]edit([validator])`18391840Это основная точка входа, которую обычно используют. Она принимает редактирующие нажатия клавиш до тех пор, пока не будет введена одна из завершающих комбинаций. Если передан18411842*validator*18431844, он должен быть функцией. Она будет вызываться для каждого введённого символа с этим символом в качестве параметра; диспетчеризация команд выполняется на основе результата. Этот метод возвращает содержимое окна в виде строки; включение пробелов в окне зависит от атрибута18451846[`stripspaces`](https://python-all.ru/3.0/library/curses.html#curses.textpad.Textbox.stripspaces)18471848.18491850#### `[curses.textpad.Textbox.do_command]do_command(ch)`18511852Обрабатывает одно нажатие командной клавиши. Ниже перечислены поддерживаемые специальные нажатия клавиш:18531854| Клавиша | Действие |1855| --- | --- |1856| `Control-A` | Переход к левому краю окна. |1857| `Control-B` | Курсор влево, с переносом на предыдущую строку (если применимо). |1858| `Control-D` | Удалить символ под курсором. |1859| `Control-E` | Перейти к правому краю (stripspaces off) или в конец строки (stripspaces on). |1860| `Control-F` | Курсор вправо, с переносом на следующую строку (если применимо). |1861| `Control-G` | Завершить, вернув содержимое окна. |1862| `Control-H` | Удалить предыдущий символ. |1863| `Control-J` | Завершает, если окно имеет 1 строку, в противном случае вставляет новую строку. |1864| `Control-K` | Если строка пуста, удалить её, в противном случае очистить до конца строки. |1865| `Control-L` | Обновить экран. |1866| `Control-N` | Курсор вниз; переместиться на одну строку вниз. |1867| `Control-O` | Вставить пустую строку в позиции курсора. |1868| `Control-P` | Курсор вверх; переместиться на одну строку вверх. |18691870Операции перемещения не выполняются, если курсор находится у края, где движение невозможно. Там, где это возможно, поддерживаются следующие синонимы:18711872| Константа | Клавиша |1873| --- | --- |1874| `KEY_LEFT` | `Control-B` |1875| `KEY_RIGHT` | `Control-F` |1876| `KEY_UP` | `Control-P` |1877| `KEY_DOWN` | `Control-N` |1878| `KEY_BACKSPACE` | `Control-h` |18791880Все остальные нажатия клавиш обрабатываются как команда вставить указанный символ и переместиться вправо (с переносом строки).18811882#### `[curses.textpad.Textbox.gather]gather()`18831884Этот метод возвращает содержимое окна в виде строки; то, включаются ли пробелы в окне, зависит от члена18851886[`stripspaces`](https://python-all.ru/3.0/library/curses.html#curses.textpad.Textbox.stripspaces)18871888.18891890#### `[curses.textpad.Textbox.stripspaces]stripspaces`18911892Этот член данных – флаг, управляющий интерпретацией пробелов в окне. Когда он включён, концевые пробелы в каждой строке игнорируются; любое движение курсора, которое привело бы к попаданию на концевой пробел, вместо этого переводит курсор в конец строки, и концевые пробелы удаляются при получении содержимого окна.18931894# `curses.wrapper` – Обработчик терминала для curses-программ18951896Этот модуль предоставляет одну функцию [`wrapper()`](https://python-all.ru/3.0/library/curses.html#curses.wrapper.wrapper), которая запускает другую функцию, составляющую основную часть приложения, использующего curses. Если приложение вызывает исключение, [`wrapper()`](https://python-all.ru/3.0/library/curses.html#curses.wrapper.wrapper) восстановит терминал в нормальное состояние, прежде чем повторно вызвать исключение и сгенерировать traceback.18971898#### `[curses.wrapper.wrapper]curses.wrapper.wrapper(func, ...)`18991900Функция-обёртка, которая инициализирует curses и вызывает другую функцию19011902*func*19031904, восстанавливая нормальное поведение клавиатуры/экрана в случае ошибки. Затем вызываемому объекту19051906*func*19071908передаётся главное окно «stdscr» в качестве первого аргумента, за которым следуют любые другие аргументы, переданные19091910[`wrapper()`](https://python-all.ru/3.0/library/curses.html#curses.wrapper.wrapper)19111912.19131914Перед вызовом функции-обработчика [`wrapper()`](https://python-all.ru/3.0/library/curses.html#curses.wrapper.wrapper) включает режим cbreak, отключает эхо, включает клавиатуру терминала и инициализирует цвета, если терминал поддерживает цвет. При завершении (как обычном, так и по исключению) он восстанавливает cooked-режим, включает эхо и отключает клавиатуру терминала.1915