curses.md
1> **Источник:** https://python-all.ru/3.16/library/curses.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `curses` – Управление терминалом для символьных дисплеев89**Исходный код:** [Lib/curses](https://python-all.ru/src/main/Lib/curses)1011---1213Модуль `curses` предоставляет интерфейс к библиотеке curses, которая является де-факто стандартом для переносимого продвинутого управления терминалом.1415Хотя curses наиболее широко используется в среде Unix, версии доступны для Windows, DOS и, возможно, других систем. Этот модуль-расширение разработан для соответствия API ncurses – библиотеки curses с открытым исходным кодом, работающей на Linux и BSD-вариантах Unix.1617[Доступность](https://python-all.ru/3.16/library/intro.html#availability): не Android, не iOS, не WASI.1819Этот модуль не поддерживается на [мобильных платформах](https://python-all.ru/3.16/library/intro.html#mobile-availability) или [платформах WebAssembly](https://python-all.ru/3.16/library/intro.html#wasm-availability).2021Это [опциональный модуль](https://python-all.ru/3.16/glossary.html#term-optional-module). Если его нет в вашей копии CPython, обратитесь к документации от вашего дистрибьютора (то есть того, кто предоставил вам Python). Если вы дистрибьютор, обратитесь к [требованиям к опциональным модулям](https://python-all.ru/3.16/using/configure.html#optional-module-requirements).2223[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.2425> **Примечание**26>27> Всякий раз, когда в документации упоминается *символ*, его можно задать как целое число, строку Unicode из одного символа или байтовую строку из одного байта.28>29> Всякий раз, когда в документации упоминается *строка символов*, её можно задать как строку Unicode или байтовую строку.3031> **См. также**32>33> **Модуль [`curses.ascii`](https://python-all.ru/3.16/library/curses.ascii.html#module-curses.ascii)**34>35> Утилиты для работы с ASCII-символами, независимо от настроек локали.36>37> **Модуль [`curses.panel`](https://python-all.ru/3.16/library/curses.panel.html#module-curses.panel)**38>39> Расширение стека панелей, добавляющее глубину окнам curses.40>41> **Модуль [`curses.textpad`](https://python-all.ru/3.16/library/curses.html#module-curses.textpad)**42>43> Виджет редактируемого текста для curses с поддержкой привязок, похожих на **Emacs**.44>45> **[Программирование с curses в Python](https://python-all.ru/3.16/howto/curses.html#curses-howto)**46>47> Учебный материал по использованию curses с Python, автор Эндрю Кучлинг и Эрик Рэймонд.4849## Функции5051Модуль `curses` определяет следующее исключение:5253#### `exception curses.error`5455Исключение, возникающее, когда функция библиотеки curses возвращает ошибку.5657> **Примечание**58>59> Всякий раз, когда аргументы *x* или *y* функции или метода являются необязательными, они по умолчанию равны текущей позиции курсора. Когда *attr* необязателен, он по умолчанию равен [`A_NORMAL`](https://python-all.ru/3.16/library/curses.html#curses.A_NORMAL).6061Модуль `curses` определяет следующие функции:6263### Инициализация и завершение6465#### `curses.initscr()`6667Инициализирует библиотеку. Возвращает объект [window](https://python-all.ru/3.16/library/curses.html#curses-window-objects), представляющий весь экран.6869См. [`setupterm()`](https://python-all.ru/3.16/library/curses.html#curses.setupterm) о предостережении относительно вызова до этой функции.7071> **Примечание**72>73> Если при открытии терминала возникает ошибка, базовая библиотека curses может вызвать завершение интерпретатора.7475#### `curses.endwin()`7677Деинициализирует библиотеку и возвращает терминал в обычное состояние.7879#### `curses.isendwin()`8081Возвращает `True`, если [`endwin()`](https://python-all.ru/3.16/library/curses.html#curses.endwin) был вызван (то есть библиотека curses была деинициализирована).8283#### `curses.newterm(type=None, fd=None, infd=None, /)`8485Инициализирует новый терминал в дополнение к тому, который был инициализирован с помощью [`initscr()`](https://python-all.ru/3.16/library/curses.html#curses.initscr), и возвращает [экран](https://python-all.ru/3.16/library/curses.html#curses-screen-objects) для него. Это позволяет программе управлять более чем одним терминалом.8687*type* – это имя терминала, как в [`setupterm()`](https://python-all.ru/3.16/library/curses.html#curses.setupterm); если `None`, используется значение переменной окружения `TERM`. *fd* и *infd* – это выходной и входной файлы для терминала: либо файловый объект, либо файловый дескриптор. По умолчанию они равны [`sys.stdout`](https://python-all.ru/3.16/library/sys.html#sys.stdout) и [`sys.stdin`](https://python-all.ru/3.16/library/sys.html#sys.stdin).8889Новый экран становится текущим. Используйте [`set_term()`](https://python-all.ru/3.16/library/curses.html#curses.set_term) для переключения между экранами.9091См. [`setupterm()`](https://python-all.ru/3.16/library/curses.html#curses.setupterm) о предостережении относительно вызова до этой функции.9293Добавлено в версии 3.16.0a0 (не выпущена).9495#### `curses.new_prescr()`9697Возвращает новый [экран](https://python-all.ru/3.16/library/curses.html#curses-screen-objects), который можно использовать для вызова функций, влияющих на глобальное состояние, до того, как будет вызвана [`initscr()`](https://python-all.ru/3.16/library/curses.html#curses.initscr) или [`newterm()`](https://python-all.ru/3.16/library/curses.html#curses.newterm).9899Доступность: если базовая библиотека curses предоставляет `new_prescr()`.100101Добавлено в версии 3.16.0a0 (не выпущена).102103#### `curses.set_term(screen, /)`104105Делает *screen* ([экран](https://python-all.ru/3.16/library/curses.html#curses-screen-objects), возвращённый [`newterm()`](https://python-all.ru/3.16/library/curses.html#curses.newterm)) текущим терминалом и возвращает предыдущий текущий экран. Возвращает `None`, если предыдущий экран был создан с помощью [`initscr()`](https://python-all.ru/3.16/library/curses.html#curses.initscr).106107Добавлено в версии 3.16.0a0 (не выпущена).108109#### `curses.wrapper(func, /, *args, **kwargs)`110111Инициализирует curses и вызывает другой вызываемый объект – *func*, который должен быть остальной частью вашего приложения, использующего curses. Если приложение вызывает исключение, эта функция восстанавливает терминал в нормальное состояние перед повторным возбуждением исключения и формированием трассировки. Вызываемому объекту *func* передаётся главное окно 'stdscr' в качестве первого аргумента, а затем все остальные аргументы, переданные в `wrapper()`. Перед вызовом *func* функция `wrapper()` включает режим cbreak, отключает эхо, включает клавиатуру терминала и инициализирует цвета, если терминал поддерживает цвет. При завершении (нормальном или по исключению) она восстанавливает cooked-режим, включает эхо и отключает клавиатуру терминала.112113### Управление режимом терминала114115#### `curses.def_prog_mode()`116117Сохраняет текущий режим терминала как «программный» режим – режим, в котором работающая программа использует curses. (Его аналог – «shell» режим, когда программа не в curses.) Последующие вызовы [`reset_prog_mode()`](https://python-all.ru/3.16/library/curses.html#curses.reset_prog_mode) восстановят этот режим.118119#### `curses.def_shell_mode()`120121Сохраняет текущий режим терминала как «shell» режим – режим, в котором работающая программа не использует curses. (Его аналог – «программный» режим, когда программа использует возможности curses.) Последующие вызовы [`reset_shell_mode()`](https://python-all.ru/3.16/library/curses.html#curses.reset_shell_mode) восстановят этот режим.122123#### `curses.reset_prog_mode()`124125Восстанавливает терминал в «программный» режим, как было сохранено ранее с помощью [`def_prog_mode()`](https://python-all.ru/3.16/library/curses.html#curses.def_prog_mode).126127#### `curses.reset_shell_mode()`128129Восстанавливает терминал в «оболочечный» режим, как было сохранено ранее с помощью [`def_shell_mode()`](https://python-all.ru/3.16/library/curses.html#curses.def_shell_mode).130131#### `curses.savetty()`132133Сохраняет текущее состояние режимов терминала в буфере, пригодном для использования с помощью [`resetty()`](https://python-all.ru/3.16/library/curses.html#curses.resetty).134135#### `curses.resetty()`136137Восстанавливает состояние режимов терминала до того, которое было при последнем вызове [`savetty()`](https://python-all.ru/3.16/library/curses.html#curses.savetty).138139#### `curses.curs_set(visibility)`140141Устанавливает состояние курсора. *visibility* может быть установлено в `0`, `1` или `2` (невидимый, нормальный, очень видимый). Если терминал поддерживает запрошенный режим видимости, возвращает предыдущее состояние курсора; в противном случае вызывает исключение. На многих терминалах режим «visible» – это подчёркивающий курсор, а режим «very visible» – блочный курсор.142143#### `curses.getsyx()`144145Возвращает текущие координаты курсора виртуального экрана в виде кортежа `(y, x)`. Если в данный момент [`leaveok`](https://python-all.ru/3.16/library/curses.html#curses.window.leaveok) равен `True`, возвращает `(-1, -1)`.146147#### `curses.setsyx(y, x)`148149Устанавливает курсор виртуального экрана в позицию *y*, *x*. Если *y* и *x* оба равны `-1`, то [`leaveok`](https://python-all.ru/3.16/library/curses.html#curses.window.leaveok) устанавливается `True`.150151#### `curses.doupdate()`152153Обновляет физический экран. Библиотека curses хранит две структуры данных: одна представляет текущее содержимое физического экрана, а виртуальный экран – желаемое следующее состояние. Функция `doupdate()` обновляет физический экран, чтобы он соответствовал виртуальному.154155Виртуальный экран можно обновить вызовом [`noutrefresh()`](https://python-all.ru/3.16/library/curses.html#curses.window.noutrefresh) после выполнения операций записи, таких как [`addstr()`](https://python-all.ru/3.16/library/curses.html#curses.window.addstr), в окне. Обычный вызов [`refresh()`](https://python-all.ru/3.16/library/curses.html#curses.window.refresh) – это просто `noutrefresh()`, за которым следует `doupdate()`; если нужно обновить несколько окон, можно ускорить работу и уменьшить мерцание экрана, выполнив вызовы `noutrefresh()` для всех окон, а затем один `doupdate()`.156157### Параметры ввода158159#### `curses.cbreak()`160161Входит в режим cbreak. В режиме cbreak (иногда называемом «редким» режимом) нормальная буферизация строк tty отключается, и символы становятся доступными для чтения по одному. Однако, в отличие от raw-режима, специальные символы (прерывание, выход, приостановка и управление потоком) сохраняют своё воздействие на драйвер tty и вызывающую программу. Вызов сначала [`raw()`](https://python-all.ru/3.16/library/curses.html#curses.raw), затем `cbreak()` оставляет терминал в режиме cbreak.162163#### `curses.nocbreak()`164165Выходит из режима cbreak. Возвращается к обычному «cooked»-режиму с буферизацией строк.166167#### `curses.echo()`168169Включает режим эхоповтора. В режиме эхоповтора каждый введённый символ отображается на экране по мере ввода.170171#### `curses.noecho()`172173Выходит из режима эхопечати. Эхо-вывод вводимых символов отключается.174175#### `curses.raw()`176177Переход в необработанный режим. В необработанном режиме отключаются обычная буферизация строк и обработка клавиш прерывания, выхода, приостановки и управления потоком; символы передаются функциям ввода curses по одному.178179#### `curses.noraw()`180181Выходит из режима raw. Возвращается к обычному «cooked»-режиму с буферизацией строк.182183#### `curses.halfdelay(tenths)`184185Используется для режима половинной задержки (half-delay), который похож на режим cbreak тем, что вводимые пользователем символы сразу становятся доступны программе. Однако после блокировки на *tenths* десятых долей секунды возбуждается исключение, если ничего не было введено. Значение *tenths* должно быть числом от `1` до `255`. Используйте [`nocbreak()`](https://python-all.ru/3.16/library/curses.html#curses.nocbreak) для выхода из режима половинной задержки.186187#### `curses.meta(flag)`188189Если *flag* равен `True`, разрешить ввод 8-битных символов. Если *flag* равен `False`, разрешить только 7-битные символы.190191#### `curses.nl(flag=True)`192193Включает режим перевода строки. В этом режиме клавиша возврата каретки преобразуется в перевод строки при вводе, а перевод строки преобразуется в возврат каретки и перевод строки при выводе. Режим перевода строки изначально включен.194195Если *flag* равен `False`, эффект аналогичен вызову [`nonl()`](https://python-all.ru/3.16/library/curses.html#curses.nonl).196197#### `curses.nonl()`198199Выходит из режима перевода строки. Отключает преобразование возврата каретки в перевод строки при вводе и отключает низкоуровневое преобразование перевода строки в возврат каретки/перевод строки при выводе (но это не меняет поведение `addch('\n')`, которое всегда выполняет эквивалент возврата каретки и перевода строки на виртуальном экране). При отключенном преобразовании curses иногда может немного ускорить вертикальное перемещение; также он сможет обнаруживать нажатие клавиши возврата каретки при вводе.200201#### `curses.intrflush(flag)`202203Если *flag* равен `True`, нажатие клавиши прерывания (interrupt, break или quit) сбросит весь вывод из очереди драйвера терминала. Если *flag* равен `False`, сброс не производится.204205#### `curses.qiflush([flag])`206207Если *flag* равно `False`, эффект аналогичен вызову [`noqiflush()`](https://python-all.ru/3.16/library/curses.html#curses.noqiflush). Если *flag* равно `True` или аргумент не указан, очереди будут сбрасываться при чтении этих управляющих символов.208209#### `curses.noqiflush()`210211При использовании процедуры `noqiflush()` обычный сброс очередей ввода и вывода, связанных с символами `INTR`, `QUIT` и `SUSP`, выполняться не будет. Возможно, стоит вызывать `noqiflush()` в обработчике сигнала, чтобы вывод продолжался так, как если бы прерывания не было, после выхода из обработчика.212213#### `curses.typeahead(fd)`214215Указывает, что файловый дескриптор *fd* должен использоваться для проверки упреждающего ввода. Если *fd* равен `-1`, то проверка упреждающего ввода не выполняется.216217Библиотека curses выполняет «оптимизацию прерывания строки» (line-breakout optimization), периодически проверяя упреждающий ввод\\nво время обновления экрана. Если ввод обнаружен и поступает с tty,\\nтекущее обновление откладывается до следующего вызова refresh или doupdate,\\nчто обеспечивает более быстрый ответ на заранее введённые команды. Эта функция\\nпозволяет указать другой файловый дескриптор для проверки упреждающего ввода.218219#### `curses.is_cbreak()`220221Возвращает `True`, если режим cbreak (см. [`cbreak()`](https://python-all.ru/3.16/library/curses.html#curses.cbreak)) включён, `False` в противном случае. Доступно: ncurses 6.5 или новее.222223Добавлено в версии 3.16.0a0 (не выпущено).224225#### `curses.is_echo()`226227Возвращает `True`, если режим echo (см. [`echo()`](https://python-all.ru/3.16/library/curses.html#curses.echo)) включён, `False` в противном случае. Доступно: ncurses 6.5 или новее.228229Добавлено в версии 3.16.0a0 (не выпущено).230231#### `curses.is_nl()`232233Возвращает `True`, если режим nl (см. [`nl()`](https://python-all.ru/3.16/library/curses.html#curses.nl)) включён, `False` в противном случае. Доступно: ncurses 6.5 или новее.234235Добавлено в версии 3.16.0a0 (не выпущено).236237#### `curses.is_raw()`238239Возвращает `True`, если режим raw (см. [`raw()`](https://python-all.ru/3.16/library/curses.html#curses.raw)) включён, `False` в противном случае. Доступно: ncurses 6.5 или новее.240241Добавлено в версии 3.16.0a0 (не выпущено).242243### Ввод с клавиатуры244245#### `curses.ungetch(ch)`246247Помещает *ch* так, что следующий вызов [`getch()`](https://python-all.ru/3.16/library/curses.html#curses.window.getch) или [`get_wch()`](https://python-all.ru/3.16/library/curses.html#curses.window.get_wch) вернёт его.248249*ch* может быть целым числом (код клавиши или код символа), байтом или строкой длиной 1. Односимвольная строка помещается как [`unget_wch()`](https://python-all.ru/3.16/library/curses.html#curses.unget_wch); в узкой сборке она должна кодироваться в один байт.250251> **Примечание**252>253> До вызова `getch()` можно поместить только один символ *ch*.254255Изменено в версии 3.16.0a0 (не выпущено): Аргумент в виде односимвольной строки больше не обязан кодироваться в один байт, за исключением узкой сборки.256257#### `curses.unget_wch(ch)`258259Помещает *ch* в очередь, чтобы следующий вызов [`get_wch()`](https://python-all.ru/3.16/library/curses.html#curses.window.get_wch) вернул его.260261> **Примечание**262>263> До вызова `get_wch()` можно поместить только один символ *ch*.264265Добавлено в версии 3.3.266267Изменено в версии 3.16.0a0 (не выпущено): Также доступно в узкой сборке, где *ch* должен кодироваться в один байт (8-битная локаль).268269#### `curses.flushinp()`270271Очищает все входные буферы. Отбрасывает любой упреждающий ввод, который был набран пользователем, но ещё не обработан программой.272273#### `curses.has_key(ch)`274275Принимает значение клавиши *ch* и возвращает `True`, если текущий тип терминала распознаёт клавишу с таким значением.276277#### `curses.keyname(k)`278279Возвращает имя клавиши с номером *k* в виде байтового объекта. Имя клавиши, создающей печатный символ ASCII, – это сам символ. Имя комбинации управляющей клавиши – это двухбайтовый байтовый объект, состоящий из знака вставки (`b'^'`) с последующим соответствующим печатным символом ASCII. Имя комбинации alt-клавиши (128–255) – это байтовый объект, состоящий из префикса `b'M-'`, за которым следует имя соответствующего символа ASCII.280281Возбуждает [`ValueError`](https://python-all.ru/3.16/library/exceptions.html#ValueError), если *k* отрицателен.282283#### `curses.define_key(definition, keycode)`284285Определяет управляющую последовательность *definition* (строку) как клавишу, которая генерирует код клавиши *keycode*, так что `curses` интерпретирует её как одну из клавиш, предопределённых в терминальной базе данных.286287Если *definition* равно `None`, любая существующая привязка для *keycode* удаляется. Если *keycode* равен нулю или отрицателен, удаляется любая привязка для *definition*.288289Добавлено в версии 3.16.0a0 (не выпущено).290291#### `curses.key_defined(definition)`292293Возвращает код клавиши, привязанный к управляющей последовательности *definition* (строке), `0`, если ни один код клавиши не привязан, или `-1`, если *definition* является префиксом более длинной привязанной последовательности (то есть неоднозначен).294295Добавлено в версии 3.16.0a0 (не выпущено).296297#### `curses.keyok(keycode, enable)`298299Включает (если *enable* равно true) или отключает (в противном случае) интерпретацию кода клавиши *keycode*. В отличие от [`window.keypad()`](https://python-all.ru/3.16/library/curses.html#curses.window.keypad), это влияет на один конкретный код клавиши, а не на все.300301Добавлено в версии 3.16.0a0 (не выпущено).302303### Мышь304305#### `curses.getmouse()`306307После того как [`getch()`](https://python-all.ru/3.16/library/curses.html#curses.window.getch) возвращает [`KEY_MOUSE`](https://python-all.ru/3.16/library/curses.html#curses.KEY_MOUSE), сигнализируя о событии мыши, следует вызвать этот метод для получения события мыши из очереди. Событие представлено в виде кортежа из 5 элементов `(id, x, y, z, bstate)`. *id* – это идентификатор, используемый для различения нескольких устройств, а *x*, *y*, *z* – координаты события. (*z* в настоящее время не используется.) *bstate* – целое число, биты которого указывают на тип события; это побитовое ИЛИ одной или нескольких следующих констант, где *n* – номер кнопки от 1 до 5: [`BUTTONn_PRESSED`](https://python-all.ru/3.16/library/curses.html#curses.BUTTONn_PRESSED), [`BUTTONn_RELEASED`](https://python-all.ru/3.16/library/curses.html#curses.BUTTONn_RELEASED), [`BUTTONn_CLICKED`](https://python-all.ru/3.16/library/curses.html#curses.BUTTONn_CLICKED), [`BUTTONn_DOUBLE_CLICKED`](https://python-all.ru/3.16/library/curses.html#curses.BUTTONn_DOUBLE_CLICKED), [`BUTTONn_TRIPLE_CLICKED`](https://python-all.ru/3.16/library/curses.html#curses.BUTTONn_TRIPLE_CLICKED), [`BUTTON_SHIFT`](https://python-all.ru/3.16/library/curses.html#curses.BUTTON_SHIFT), [`BUTTON_CTRL`](https://python-all.ru/3.16/library/curses.html#curses.BUTTON_CTRL), [`BUTTON_ALT`](https://python-all.ru/3.16/library/curses.html#curses.BUTTON_ALT).308309Изменено в версии 3.10: Константы `BUTTON5_*` теперь доступны, если они предоставляются базовой библиотекой curses.310311#### `curses.ungetmouse(id, x, y, z, bstate)`312313Помещает событие [`KEY_MOUSE`](https://python-all.ru/3.16/library/curses.html#curses.KEY_MOUSE) во входную очередь, связывая с ним указанные данные состояния.314315#### `curses.mousemask(mousemask)`316317Устанавливает, какие события мыши отслеживать, и возвращает кортеж `(availmask, oldmask)`. *availmask* указывает, какие из указанных событий мыши могут отслеживаться; в случае полной неудачи возвращается `0`. *oldmask* – предыдущее значение маски событий мыши. Если эта функция ни разу не вызывалась, события мыши не отслеживаются.318319#### `curses.mouseinterval(interval)`320321Устанавливает максимальное время в миллисекундах, которое может пройти между нажатием и отпусканием, чтобы это считалось щелчком, и возвращает предыдущее значение интервала. Значение по умолчанию – 166 миллисекунд, или одна шестая секунды. Используйте отрицательное *interval*, чтобы получить значение интервала без его изменения.322323#### `curses.has_mouse()`324325Возвращает `True`, если драйвер мыши успешно инициализирован.326327Доступность: если базовая библиотека curses предоставляет `has_mouse()`.328329Добавлено в версии 3.16.0a0 (не выпущено).330331### Цвет332333#### `curses.start_color()`334335Должна быть вызвана, если программист хочет использовать цвета, и перед вызовом любой другой процедуры управления цветом. Рекомендуется вызывать эту процедуру сразу после [`initscr()`](https://python-all.ru/3.16/library/curses.html#curses.initscr).336337`start_color()` инициализирует восемь базовых цветов (чёрный, красный, зелёный, жёлтый,\\nсиний, пурпурный, голубой и белый) и две глобальные переменные в модуле `curses`:\\n[`COLORS`](https://python-all.ru/3.16/library/curses.html#curses.COLORS) и [`COLOR_PAIRS`](https://python-all.ru/3.16/library/curses.html#curses.COLOR_PAIRS), содержащие максимальное количество\\nцветов и цветовых пар, которые поддерживает терминал. Она также восстанавливает цвета\\nна терминале до значений, которые были при его включении.338339#### `curses.has_colors()`340341Возвращает `True`, если терминал может отображать цвета; в противном случае возвращает `False`.342343#### `curses.has_extended_color_support()`344345Возвращает `True`, если модуль поддерживает расширенные цвета; в противном случае возвращает `False`. Расширенная поддержка цветов позволяет использовать более 256 цветовых пар для терминалов, поддерживающих более 16 цветов (например, xterm-256color).346347Расширенная поддержка цветов требует ncurses версии 6.1 или выше.348349Добавлено в версии 3.10.350351#### `curses.can_change_color()`352353Возвращает `True` или `False` в зависимости от того, может ли программист изменять цвета, отображаемые терминалом.354355#### `curses.init_color(color_number, r, g, b)`356357Изменяет определение цвета: принимает номер изменяемого цвета и три значения RGB (для количеств красной, зелёной и синей составляющих). Значение *color\_number* должно быть от `0` до `COLORS - 1`. Каждое из *r*, *g*, *b* должно быть значением от `0` до `1000`. При использовании `init_color()` все вхождения этого цвета на экране немедленно изменяются на новое определение. На большинстве терминалов эта функция ничего не делает; она активна только если [`can_change_color()`](https://python-all.ru/3.16/library/curses.html#curses.can_change_color) возвращает `True`.358359#### `curses.color_content(color_number)`360361Возвращает интенсивность красного, зелёного и синего (RGB) компонентов цвета *color\_number*, который должен быть в диапазоне от `0` до `COLORS - 1`. Возвращает кортеж из трёх элементов, содержащий значения R, G, B для указанного цвета; каждое значение будет в диапазоне от `0` (нет компонента) до `1000` (максимальная интенсивность компонента). Вызывает исключение, если цвет не поддерживается.362363#### `curses.init_pair(pair_number, fg, bg)`364365Изменяет определение цветовой пары. Принимает три аргумента: номер изменяемой цветовой пары, номер цвета переднего плана и номер цвета фона. Значение *pair\_number* должно быть от `1` до `COLOR_PAIRS - 1` (цветовую пару `0` можно изменить только с помощью [`use_default_colors()`](https://python-all.ru/3.16/library/curses.html#curses.use_default_colors) и [`assume_default_colors()`](https://python-all.ru/3.16/library/curses.html#curses.assume_default_colors)). Значения аргументов *fg* и *bg* должны быть от `0` до `COLORS - 1` или, после вызова `use_default_colors()` или `assume_default_colors()`, `-1`. Если цветовая пара была предварительно инициализирована, экран обновляется, и все вхождения этой пары заменяются новым определением.366367#### `curses.pair_content(pair_number)`368369Возвращает кортеж `(fg, bg)`, содержащий цвета для запрошенной пары цветов. Значение *pair\_number* должно находиться в диапазоне от `0` до `COLOR_PAIRS - 1`.370371#### `curses.color_pair(pair_number)`372373Возвращает значение атрибута для вывода текста в заданной цветовой паре. Могут быть представлены только те цветовые пары, которые помещаются в поле цветовой пары возвращаемого значения (обычно первые 256); больший *pair\_number* вызывает [`OverflowError`](https://python-all.ru/3.16/library/exceptions.html#OverflowError), а не молча маскируется на другую пару. Используйте [`color_set()`](https://python-all.ru/3.16/library/curses.html#curses.window.color_set) или [`attr_set()`](https://python-all.ru/3.16/library/curses.html#curses.window.attr_set) для отображения более высоких пар. Это значение атрибута можно комбинировать с [`A_STANDOUT`](https://python-all.ru/3.16/library/curses.html#curses.A_STANDOUT), [`A_REVERSE`](https://python-all.ru/3.16/library/curses.html#curses.A_REVERSE) и другими атрибутами `A_*`. [`pair_number()`](https://python-all.ru/3.16/library/curses.html#curses.pair_number) является аналогом этой функции.374375#### `curses.pair_number(attr)`376377Возвращает номер пары цветов, установленной значением атрибута *attr*. [`color_pair()`](https://python-all.ru/3.16/library/curses.html#curses.color_pair) является аналогом этой функции.378379#### `curses.use_default_colors()`380381Эквивалентно `assume_default_colors(-1, -1)`.382383#### `curses.assume_default_colors(fg, bg, /)`384385Разрешает использование значений по умолчанию для цветов на терминалах, поддерживающих эту возможность. Используется для поддержки прозрачности в приложении.386387- Назначает цвета переднего и заднего плана терминала по умолчанию номеру цвета `-1`. Таким образом, `init_pair(x, COLOR_RED, -1)` инициализирует пару *x* как красный на фоне по умолчанию, а `init_pair(x, -1, COLOR_BLUE)` инициализирует пару *x* как передний план по умолчанию на синем.388- Изменяет определение цветовой пары `0` на `(fg, bg)`.389390Это расширение ncurses.391392Добавлено в версии 3.14.393394#### `curses.alloc_pair(fg, bg)`395396Выделяет цветовую пару для цвета переднего плана *fg* и цвета фона *bg*, и возвращает её номер. Если цветовая пара для той же комбинации цветов уже существует, возвращает её номер. В противном случае выделяет новую цветовую пару и возвращает её номер.397398Эта функция доступна только в том случае, если Python был собран для работы с широкосимвольной версией базовой библиотеки curses с поддержкой расширенных цветов (см. [`has_extended_color_support()`](https://python-all.ru/3.16/library/curses.html#curses.has_extended_color_support)).399400Добавлено в версии 3.16.0a0 (не выпущена).401402#### `curses.free_pair(pair_number)`403404Освобождает цветовую пару *pair\_number*, которая должна быть выделена с помощью [`alloc_pair()`](https://python-all.ru/3.16/library/curses.html#curses.alloc_pair). Пара не должна использоваться.405406Эта функция доступна только в том случае, если Python был собран для работы с широкосимвольной версией базовой библиотеки curses с поддержкой расширенных цветов (см. [`has_extended_color_support()`](https://python-all.ru/3.16/library/curses.html#curses.has_extended_color_support)).407408Добавлено в версии 3.16.0a0 (не выпущена).409410#### `curses.find_pair(fg, bg)`411412Возвращает номер цветовой пары для цвета переднего плана *fg* и цвета фона *bg*, или `-1`, если для этой комбинации цветов не было выделено ни одной пары.413414Эта функция доступна только в том случае, если Python был собран для работы с широкосимвольной версией базовой библиотеки curses с поддержкой расширенных цветов (см. [`has_extended_color_support()`](https://python-all.ru/3.16/library/curses.html#curses.has_extended_color_support)).415416Добавлено в версии 3.16.0a0 (не выпущена).417418#### `curses.reset_color_pairs()`419420Сбрасывает все определения цветовых пар, освобождая пары, выделенные с помощью [`init_pair()`](https://python-all.ru/3.16/library/curses.html#curses.init_pair) и [`alloc_pair()`](https://python-all.ru/3.16/library/curses.html#curses.alloc_pair).421422Эта функция доступна только в том случае, если Python был собран для работы с широкосимвольной версией базовой библиотеки curses с поддержкой расширенных цветов (см. [`has_extended_color_support()`](https://python-all.ru/3.16/library/curses.html#curses.has_extended_color_support)).423424Добавлено в версии 3.16.0a0 (не выпущена).425426### Окна и pads427428#### `curses.newwin(nlines, ncols)`429430#### `curses.newwin(nlines, ncols, begin_y, begin_x)`431432Возвращает новое [окно](https://python-all.ru/3.16/library/curses.html#curses-window-objects), левый верхний угол которого находится в `(begin_y, begin_x)`, а высота/ширина равны *nlines*/*ncols*.433434По умолчанию окно будет расширяться от указанной позиции до нижнего правого угла экрана.435436#### `curses.newpad(nlines, ncols)`437438Создает и возвращает указатель на новую структуру данных pad с заданным количеством строк и столбцов. Возвращает pad как объект окна.439440Pad похож на окно, за исключением того, что он не ограничен размером экрана и не обязательно связан с определенной частью экрана. Pad'ы можно использовать, когда нужно большое окно, а на экране одновременно видна только его часть. Автоматическое обновление pad'ов (например, при прокрутке или эхо-вводе) не происходит. Методы [`refresh()`](https://python-all.ru/3.16/library/curses.html#curses.window.refresh) и [`noutrefresh()`](https://python-all.ru/3.16/library/curses.html#curses.window.noutrefresh) pad'а требуют 6 аргументов для указания отображаемой части pad'а и места на экране для отображения. Аргументы: *pminrow*, *pmincol*, *sminrow*, *smincol*, *smaxrow*, *smaxcol*. Аргументы *p* относятся к левому верхнему углу отображаемой области pad'а, а аргументы *s* определяют прямоугольник отсечения на экране, в который будет выведена область pad'а.441442### Программируемые метки443444Следующие функции управляют *клавишами программируемых меток* – строкой меток, отображаемой вдоль нижней строки экрана, обычно используемой для подписи функциональных клавиш. [`slk_init()`](https://python-all.ru/3.16/library/curses.html#curses.slk_init) должна быть вызвана до [`initscr()`](https://python-all.ru/3.16/library/curses.html#curses.initscr) или [`newterm()`](https://python-all.ru/3.16/library/curses.html#curses.newterm); она отнимает одну экранную строку у стандартного окна для меток.445446#### `curses.slk_init(fmt=0)`447448Резервирует экранную строку для программируемых меток и выбирает их размещение. *fmt* выбирает расположение: `0` для 3-2-3 (восемь меток), `1` для 4-4 (восемь меток). Если базовая библиотека curses их поддерживает, `2` даёт 4-4-4 (двенадцать меток) и `3` даёт 4-4-4 со строкой индекса.449450Должна быть вызвана до [`initscr()`](https://python-all.ru/3.16/library/curses.html#curses.initscr) или [`newterm()`](https://python-all.ru/3.16/library/curses.html#curses.newterm).451452Добавлено в версии 3.16.0a0 (не выпущена).453454#### `curses.slk_set(labnum, label, justify)`455456Устанавливает текст программной метки с номером *labnum*, в диапазоне от `1` до `8` (или `12` в двенадцатиметочном расположении). *justify* управляет тем, как *label* размещается внутри метки: `0` для выравнивания по левому краю, `1` для центрирования, `2` для выравнивания по правому краю.457458Добавлено в версии 3.16.0a0 (не выпущена).459460#### `curses.slk_label(labnum)`461462Возвращает текущий текст мягкой метки номер *labnum*, выровненный так, как было задано, или пустую строку, если у неё нет метки.463464Добавлено в версии 3.16.0a0 (не выпущено).465466#### `curses.slk_refresh()`467468Обновляет мягкие метки на физическом экране, как [`refresh()`](https://python-all.ru/3.16/library/curses.html#curses.window.refresh) для окна.469470Добавлено в версии 3.16.0a0 (не выпущено).471472#### `curses.slk_noutrefresh()`473474Обновляет мягкие метки на виртуальном экране, как [`window.noutrefresh()`](https://python-all.ru/3.16/library/curses.html#curses.window.noutrefresh). Используется вместе с [`doupdate()`](https://python-all.ru/3.16/library/curses.html#curses.doupdate) для пакетного обновления экрана.475476Добавлено в версии 3.16.0a0 (не выпущено).477478#### `curses.slk_clear()`479480Удаляет мягкие метки с экрана.481482Добавлено в версии 3.16.0a0 (не выпущено).483484#### `curses.slk_restore()`485486Восстанавливает мягкие метки на экране после [`slk_clear()`](https://python-all.ru/3.16/library/curses.html#curses.slk_clear).487488Добавлено в версии 3.16.0a0 (не выпущено).489490#### `curses.slk_touch()`491492Принудительно перерисовывает все мягкие метки при следующем [`slk_refresh()`](https://python-all.ru/3.16/library/curses.html#curses.slk_refresh) или [`slk_noutrefresh()`](https://python-all.ru/3.16/library/curses.html#curses.slk_noutrefresh).493494Добавлено в версии 3.16.0a0 (не выпущено).495496#### `curses.slk_attron(attr)`497498#### `curses.slk_attroff(attr)`499500#### `curses.slk_attrset(attr)`501502Добавляет, удаляет или задаёт атрибуты, используемые для отображения мягких меток, заданные в виде упакованных `A_*` атрибутов.503504Добавлено в версии 3.16.0a0 (не выпущено).505506#### `curses.slk_attr()`507508Возвращает текущие атрибуты мягких меток в виде упакованных `A_*` атрибутов. Доступность зависит от используемой библиотеки curses.509510Добавлено в версии 3.16.0a0 (не выпущено).511512#### `curses.slk_attr_on(attr)`513514#### `curses.slk_attr_off(attr)`515516Включает или выключает указанные атрибуты, не затрагивая остальные. Как и методы окна `attr_*`, они работают с [атрибутами WA\_\*](https://python-all.ru/3.16/library/curses.html#curses-wa-constants), а не с упакованными `A_*` атрибутами.517518Добавлено в версии 3.16.0a0 (не выпущено).519520#### `curses.slk_attr_set(attr, pair=0)`521522Задаёт атрибуты и цветовую пару мягких меток. *attr* задаётся как [атрибуты WA\_\*](https://python-all.ru/3.16/library/curses.html#curses-wa-constants), а *pair* – как номер цветовой пары.523524Добавлено в версии 3.16.0a0 (не выпущена).525526#### `curses.slk_color(pair)`527528Устанавливает цветовую пару для программируемых меток по номеру цветовой пары *pair*.529530Добавлено в версии 3.16.0a0 (не выпущена).531532### Сохранение и восстановление533534#### `curses.getwin(file)`535536Читает данные окна из файла, сохранённые предыдущим вызовом [`window.putwin()`](https://python-all.ru/3.16/library/curses.html#curses.window.putwin). Затем процедура создаёт и инициализирует новое окно, используя эти данные, и возвращает объект нового окна. Аргумент *file* должен быть файловым объектом, открытым для чтения в двоичном режиме.537538#### `curses.scr_dump(filename)`539540Записывает текущее содержимое виртуального экрана в *filename*, который может быть строкой или [объектом, подобным пути](https://python-all.ru/3.16/glossary.html#term-path-like-object). Файл впоследствии может быть прочитан с помощью [`scr_restore()`](https://python-all.ru/3.16/library/curses.html#curses.scr_restore), [`scr_init()`](https://python-all.ru/3.16/library/curses.html#curses.scr_init) или [`scr_set()`](https://python-all.ru/3.16/library/curses.html#curses.scr_set). Это полноэкранный аналог [`window.putwin()`](https://python-all.ru/3.16/library/curses.html#curses.window.putwin).541542Добавлено в версии 3.16.0a0 (не выпущена).543544#### `curses.scr_restore(filename)`545546Устанавливает виртуальный экран в содержимое *filename*, которое должно быть записано с помощью [`scr_dump()`](https://python-all.ru/3.16/library/curses.html#curses.scr_dump). Следующий вызов [`doupdate()`](https://python-all.ru/3.16/library/curses.html#curses.doupdate) или [`window.refresh()`](https://python-all.ru/3.16/library/curses.html#curses.window.refresh) восстанавливает экран в это содержимое.547548Добавлено в версии 3.16.0a0 (не выпущена).549550#### `curses.scr_init(filename)`551552Инициализирует предполагаемое содержимое терминала из *filename*, который должен быть записан с помощью [`scr_dump()`](https://python-all.ru/3.16/library/curses.html#curses.scr_dump). Используйте это, когда терминал уже отображает это содержимое, например, после того, как другая программа нарисовала экран, чтобы curses не перерисовывал то, что уже отображено.553554Добавлено в версии 3.16.0a0 (не выпущена).555556#### `curses.scr_set(filename)`557558Использует *filename*, который должен быть записан с помощью [`scr_dump()`](https://python-all.ru/3.16/library/curses.html#curses.scr_dump), как виртуальный экран и предполагаемое содержимое терминала. Это объединяет эффекты [`scr_restore()`](https://python-all.ru/3.16/library/curses.html#curses.scr_restore) и [`scr_init()`](https://python-all.ru/3.16/library/curses.html#curses.scr_init).559560Добавлено в версии 3.16.0a0 (не выпущена).561562### Запрос терминала563564#### `curses.baudrate()`565566Возвращает скорость вывода терминала в битах в секунду. На программных терминальных эмуляторах она будет иметь фиксированное высокое значение. Включена по историческим причинам; в прежние времена она использовалась для написания циклов вывода с временными задержками и иногда для изменения интерфейсов в зависимости от скорости линии.567568#### `curses.erasechar()`569570Возвращает текущий символ стирания пользователя в виде сырого байта, объекта [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes) длиной 1. См. также [`erasewchar()`](https://python-all.ru/3.16/library/curses.html#curses.erasewchar).571572#### `curses.erasewchar()`573574Возвращает текущий символ стирания пользователя в виде односимвольного [`str`](https://python-all.ru/3.16/library/stdtypes.html#str). В операционных системах Unix это свойство управляющего tty программы curses и не устанавливается самой библиотекой curses.575576Добавлено в версии 3.16.0a0 (не выпущена).577578#### `curses.killchar()`579580Возвращает текущий символ удаления строки пользователя в виде сырого байта, объекта [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes) длиной 1. См. также [`killwchar()`](https://python-all.ru/3.16/library/curses.html#curses.killwchar).581582#### `curses.killwchar()`583584Возвращает текущий символ удаления строки пользователя в виде односимвольного [`str`](https://python-all.ru/3.16/library/stdtypes.html#str). В операционных системах Unix это свойство управляющего tty программы curses и не устанавливается самой библиотекой curses.585586Добавлено в версии 3.16.0a0 (не выпущена).587588#### `curses.termname()`589590Возвращает значение переменной окружения `TERM` в виде объекта bytes,\\nусечённое до 14 символов.591592#### `curses.longname()`593594Возвращает байтовый объект, содержащий поле длинного имени terminfo, описывающее текущий терминал. Максимальная длина подробного описания – 128 символов. Оно определено только после вызова [`initscr()`](https://python-all.ru/3.16/library/curses.html#curses.initscr).595596#### `curses.termattrs()`597598Возвращает логическое ИЛИ всех видеоатрибутов, поддерживаемых терминалом. Эта\\nинформация полезна, когда программа curses требует полного контроля над\\nвнешним видом экрана.599600#### `curses.term_attrs()`601602Как [`termattrs()`](https://python-all.ru/3.16/library/curses.html#curses.termattrs), но возвращает атрибуты в виде значений [WA\_\*](https://python-all.ru/3.16/library/curses.html#curses-wa-constants), а не `A_*` значений.603604Добавлено в версии 3.16.0a0 (не выпущено).605606#### `curses.has_ic()`607608Возвращает `True`, если терминал поддерживает вставку и удаление символов. Эта функция включена только по историческим причинам, так как все современные программные эмуляторы терминала имеют такие возможности.609610#### `curses.has_il()`611612Возвращает `True`, если терминал поддерживает вставку и удаление строк, или может имитировать их с помощью областей прокрутки. Эта функция включена только по историческим причинам, так как все современные программные эмуляторы терминала имеют такие возможности.613614### Звуковой сигнал и вспышка экрана615616#### `curses.beep()`617618Издаёт короткий звуковой сигнал.619620#### `curses.flash()`621622Выполняет вспышку экрана. То есть переключает его в режим инвертированного видео и обратно через короткий интервал. Некоторые предпочитают такой «видимый звонок» звуковому сигналу внимания, создаваемому [`beep()`](https://python-all.ru/3.16/library/curses.html#curses.beep).623624### Изменение размера терминала625626#### `curses.resizeterm(nlines, ncols)`627628Изменяет размеры стандартного и текущего окон до указанных размеров и корректирует другие служебные данные, используемые библиотекой curses для записи размеров окон (в частности, обработчик SIGWINCH).629630#### `curses.resize_term(nlines, ncols)`631632Внутренняя функция, используемая [`resizeterm()`](https://python-all.ru/3.16/library/curses.html#curses.resizeterm), выполняющая основную работу; при изменении размеров окон `resize_term()` заполняет пробелами расширенные области. Вызывающее приложение должно заполнить эти области соответствующими данными. Функция `resize_term()` пытается изменить размеры всех окон. Однако из-за соглашения о вызове панелей невозможно изменить их размер без дополнительного взаимодействия с приложением.633634#### `curses.is_term_resized(nlines, ncols)`635636Возвращает `True`, если [`resize_term()`](https://python-all.ru/3.16/library/curses.html#curses.resize_term) изменит структуру окна, в противном случае `False`.637638#### `curses.update_lines_cols()`639640Обновляет переменные модуля [`LINES`](https://python-all.ru/3.16/library/curses.html#curses.LINES) и [`COLS`](https://python-all.ru/3.16/library/curses.html#curses.COLS). Полезно для обнаружения ручного изменения размера экрана.641642Добавлено в версии 3.5.643644### База данных Terminfo645646#### `curses.setupterm(term=None, fd=-1)`647648Инициализирует терминал. *term* – строка, задающая имя терминала\\nили `None`; если опущена или `None`, будет использовано значение переменной окружения\\n`TERM`. *fd* – файловый дескриптор, на который будут отправляться любые\\nпоследовательности инициализации; если не указан или `-1`, будет использован\\nфайловый дескриптор для `sys.stdout`.649650Вызывает [`curses.error`](https://python-all.ru/3.16/library/curses.html#curses.error), если терминал не найден или не удалось прочитать его запись\\nв базе terminfo. Если терминал уже был\\nинициализирован, эта функция не даёт эффекта.651652> **Примечание**653>654> Вызов [`initscr()`](https://python-all.ru/3.16/library/curses.html#curses.initscr) или [`newterm()`](https://python-all.ru/3.16/library/curses.html#curses.newterm) после `setupterm()` приводит к утечке терминала, выделенного `setupterm()`: библиотека curses хранит только один текущий терминал и не освобождает ранее выделенный.655656#### `curses.tigetflag(capname)`657658Возвращает значение булевой возможности, соответствующей имени возможности terminfo\\n*capname*, в виде целого числа. Возвращает значение `-1`, если *capname* не является\\nбулевой возможностью, или `0`, если она отменена или отсутствует в описании\\nтерминала.659660[`setupterm()`](https://python-all.ru/3.16/library/curses.html#curses.setupterm) (или [`initscr()`](https://python-all.ru/3.16/library/curses.html#curses.initscr)) должна быть вызвана первой.661662#### `curses.tigetnum(capname)`663664Возвращает значение числовой возможности, соответствующей имени возможности terminfo\\n*capname*, в виде целого числа. Возвращает значение `-2`, если *capname* не является\\nчисловой возможностью, или `-1`, если она отменена или отсутствует в описании\\nтерминала.665666[`setupterm()`](https://python-all.ru/3.16/library/curses.html#curses.setupterm) (или [`initscr()`](https://python-all.ru/3.16/library/curses.html#curses.initscr)) должна быть вызвана первой.667668#### `curses.tigetstr(capname)`669670Возвращает значение строковой возможности, соответствующей имени возможности terminfo\\n*capname*, в виде объекта bytes. Возвращает `None`, если *capname*\\nне является «строковой возможностью» terminfo, либо отменена или отсутствует в\\nописании терминала.671672[`setupterm()`](https://python-all.ru/3.16/library/curses.html#curses.setupterm) (или [`initscr()`](https://python-all.ru/3.16/library/curses.html#curses.initscr)) должна быть вызвана первой.673674#### `curses.tparm(str[, ...])`675676Создаёт экземпляр объекта bytes *str* с заданными параметрами, где *str* должна\\nбыть параметризованной строкой, полученной из базы terminfo. Например,\\n`tparm(tigetstr("cup"), 5, 3)` может дать `b'\033[6;4H'`, точный\\nрезультат зависит от типа терминала. Можно передать до девяти целочисленных параметров.677678[`setupterm()`](https://python-all.ru/3.16/library/curses.html#curses.setupterm) (или [`initscr()`](https://python-all.ru/3.16/library/curses.html#curses.initscr)) должна быть вызвана первой.679680#### `curses.putp(str)`681682Эквивалентно `tputs(str, 1, putchar)`; выводит значение указанной возможности terminfo для текущего терминала. Обратите внимание, что вывод `putp()` всегда направляется в стандартный вывод.683684[`setupterm()`](https://python-all.ru/3.16/library/curses.html#curses.setupterm) (или [`initscr()`](https://python-all.ru/3.16/library/curses.html#curses.initscr)) должна быть вызвана первой.685686### Утилиты687688#### `curses.unctrl(ch)`689690Возвращает объект bytes, содержащий печатное представление символа *ch*. *ch* не может быть символом, который не помещается в один байт; для таких используйте [`wunctrl()`](https://python-all.ru/3.16/library/curses.html#curses.wunctrl).691692#### `curses.wunctrl(ch)`693694Возвращает строку, которая является печатным представлением символа *ch*; все атрибуты и цветовая пара игнорируются. Управляющие символы ASCII представляются в виде знака вставки (caret), за которым следует символ, например `'^C'`. Печатные символы, включая не-ASCII символы, печатаемые в текущей локали, остаются без изменений. Представление других символов определяется используемой библиотекой curses.695696Добавлено в версии 3.16.0a0 (не выпущено).697698#### `curses.filter()`699700Подпрограмма `filter()`, если используется, должна вызываться до вызова [`initscr()`](https://python-all.ru/3.16/library/curses.html#curses.initscr). Эффект заключается в том, что во время инициализации `LINES` устанавливается в `1`; отключаются возможности `clear`, `cup`, `cud`, `cud1`, `cuu1`, `cuu`, `vpa`; а строка `home` устанавливается в значение `cr`. В результате курсор и обновления экрана ограничиваются текущей строкой. Это может использоваться для построчного редактирования посимвольно, не затрагивая остальную часть экрана.701702#### `curses.nofilter()`703704Отменяет действие предыдущего вызова [`filter()`](https://python-all.ru/3.16/library/curses.html#curses.filter). Как и `filter()`, должна быть вызвана до [`initscr()`](https://python-all.ru/3.16/library/curses.html#curses.initscr) (или [`newterm()`](https://python-all.ru/3.16/library/curses.html#curses.newterm)), чтобы следующая инициализация снова использовала весь экран.705706Доступность: если используемая библиотека curses предоставляет `nofilter()`.707708Добавлено в версии 3.16.0a0 (не выпущено).709710#### `curses.use_env(flag)`711712Если эта функция используется, её следует вызывать до вызова [`initscr()`](https://python-all.ru/3.16/library/curses.html#curses.initscr) или newterm. Когда *flag* равен `False`, используются значения строк и столбцов, указанные в базе terminfo, даже если установлены переменные окружения `LINES` и `COLUMNS` (используемые по умолчанию) или если curses работает в окне (в этом случае поведением по умолчанию было бы использование размера окна, если `LINES` и `COLUMNS` не установлены).713714#### `curses.get_escdelay()`715716Возвращает значение, установленное [`set_escdelay()`](https://python-all.ru/3.16/library/curses.html#curses.set_escdelay).717718Добавлено в версии 3.9.719720#### `curses.set_escdelay(ms)`721722Устанавливает количество миллисекунд ожидания после чтения escape-символа, чтобы различать отдельный escape-символ, введённый с клавиатуры, и escape-последовательности, отправляемые клавишами курсора и функциональными клавишами.723724Добавлено в версии 3.9.725726#### `curses.get_tabsize()`727728Возвращает значение, установленное [`set_tabsize()`](https://python-all.ru/3.16/library/curses.html#curses.set_tabsize).729730Добавлено в версии 3.9.731732#### `curses.set_tabsize(size)`733734Устанавливает количество столбцов, используемое библиотекой curses при преобразовании символа табуляции в пробелы при добавлении табуляции в окно.735736Добавлено в версии 3.9.737738#### `curses.napms(ms)`739740Приостанавливает выполнение на *ms* миллисекунд.741742#### `curses.delay_output(ms)`743744Вставляет паузу в вывод на *ms* миллисекунд.745746## Объекты окон747748#### `class curses.window`749750Объекты окон, возвращаемые функциями [`initscr()`](https://python-all.ru/3.16/library/curses.html#curses.initscr) и [`newwin()`](https://python-all.ru/3.16/library/curses.html#curses.newwin) выше, имеют следующие методы и атрибуты:751752### Добавление и вставка текста753754#### `window.addch(ch[, attr])`755756#### `window.addch(y, x, ch[, attr])`757758Выводит символ *ch* в позиции `(y, x)` с атрибутами *attr*, перезаписывая любой символ, ранее выведенный в этой позиции. По умолчанию позиция символа и атрибуты берутся из текущих настроек объекта окна.759760*ch* может быть одним символом, за которым могут следовать комбинирующие символы, которые вместе занимают одну символьную ячейку.761762> **Примечание**763>764> Запись за пределами окна, подокна или pad'а вызывает исключение [`curses.error`](https://python-all.ru/3.16/library/curses.html#curses.error). Попытка записи в правый нижний угол окна, подокна или pad'а приведёт к возбуждению исключения после вывода символа.765766Изменено в версии 3.16.0a0 (не выпущена): Теперь символ можно задать в виде строки из базового символа, за которым следуют комбинирующие символы, а не только как одиночный символ, или как [`complexchar`](https://python-all.ru/3.16/library/curses.html#curses.complexchar) ячейка.767768#### `window.addstr(str[, attr])`769770#### `window.addstr(y, x, str[, attr])`771772Выводит строку *str* в позиции `(y, x)` с атрибутами *attr*, перезаписывая всё, что ранее было на экране.773774*str* также может быть [`complexstr`](https://python-all.ru/3.16/library/curses.html#curses.complexstr); в этом случае каждая ячейка несёт свои собственные атрибуты и цветовую пару, поэтому *attr* указывать нельзя. `complexstr` полученный из [`in_wchstr()`](https://python-all.ru/3.16/library/curses.html#curses.window.in_wchstr), записывается обратно без изменений.775776> **Примечание**777>778> - Запись за пределами окна, подокна или pad'а вызывает исключение [`curses.error`](https://python-all.ru/3.16/library/curses.html#curses.error). Попытка записи в правый нижний угол окна, подокна или pad'а приведёт к возбуждению исключения после вывода строки.779> - Ошибка в ncurses (бэкенде этого модуля Python) могла вызывать ошибку сегментации при изменении размера окон. Это было исправлено в ncurses-6.1-20190511. Если вы вынуждены использовать более старую версию ncurses, вы можете избежать этой ошибки, не вызывая `addstr()` с *str*, содержащим символы новой строки; вместо этого вызывайте `addstr()` отдельно для каждой строки.780781Изменено в версии 3.16.0a0 (не выпущена): Теперь *str* также может быть [`complexstr`](https://python-all.ru/3.16/library/curses.html#curses.complexstr), как описано выше.782783#### `window.addnstr(str, n[, attr])`784785#### `window.addnstr(y, x, str, n[, attr])`786787Выводит не более *n* символов строки *str* в позиции `(y, x)` с атрибутами *attr*, перезаписывая всё, что ранее было на экране.788789Изменено в версии 3.16.0a0 (не выпущена): Теперь *str* также может быть [`complexstr`](https://python-all.ru/3.16/library/curses.html#curses.complexstr); см. [`addstr()`](https://python-all.ru/3.16/library/curses.html#curses.window.addstr).790791#### `window.echochar(ch[, attr])`792793Добавляет символ *ch* с атрибутом *attr* и сразу же вызывает [`refresh()`](https://python-all.ru/3.16/library/curses.html#curses.window.refresh) для окна.794795Изменено в версии 3.16.0a0 (не выпущена): Широкие и комбинирующие символы, а также ячейки [`complexchar`](https://python-all.ru/3.16/library/curses.html#curses.complexchar), теперь принимаются.796797#### `window.insch(ch[, attr])`798799#### `window.insch(y, x, ch[, attr])`800801Вставляет символ *ch* с атрибутами *attr* перед символом под курсором или в позиции `(y, x)`, если указано. Все символы правее курсора сдвигаются на одну позицию вправо, при этом крайний правый символ строки теряется. Положение курсора не меняется.802803Изменено в версии 3.16.0a0 (не выпущена): Широкие и комбинирующие символы, а также ячейки [`complexchar`](https://python-all.ru/3.16/library/curses.html#curses.complexchar), теперь принимаются.804805#### `window.insstr(str[, attr])`806807#### `window.insstr(y, x, str[, attr])`808809Вставляет строку символов (столько символов, сколько помещается на строке) перед символом под курсором. Все символы справа от курсора сдвигаются вправо, при этом крайние правые символы строки теряются. Позиция курсора не меняется (после перемещения в *y*, *x*, если указано).810811*str* также может быть [`complexstr`](https://python-all.ru/3.16/library/curses.html#curses.complexstr); в этом случае каждая ячейка несёт свои собственные атрибуты и цветовую пару, поэтому *attr* указывать нельзя.812813Изменено в версии 3.16.0a0 (не выпущена): Теперь *str* также может быть [`complexstr`](https://python-all.ru/3.16/library/curses.html#curses.complexstr), как описано выше.814815#### `window.insnstr(str, n[, attr])`816817#### `window.insnstr(y, x, str, n[, attr])`818819Вставляет строку символов (столько символов, сколько помещается на строке) перед символом под курсором, до *n* символов. Если *n* равно нулю или отрицательно, вставляется вся строка. Все символы справа от курсора сдвигаются вправо, при этом крайние правые символы строки теряются. Позиция курсора не меняется (после перемещения в *y*, *x*, если указано).820821Изменено в версии 3.16.0a0 (не выпущена): Теперь *str* также может быть [`complexstr`](https://python-all.ru/3.16/library/curses.html#curses.complexstr); см. [`insstr()`](https://python-all.ru/3.16/library/curses.html#curses.window.insstr).822823### Удаление и вставка строк824825#### `window.delch([y, x])`826827Удаляет символ под курсором или в позиции `(y, x)`, если она указана. Все символы справа в той же строке сдвигаются на одну позицию влево.828829#### `window.deleteln()`830831Удаляет строку под курсором. Все последующие строки сдвигаются вверх на одну.832833#### `window.insertln()`834835Вставляет пустую строку под курсором. Все последующие строки сдвигаются на одну строку вниз.836837#### `window.insdelln(nlines)`838839Вставляет *nlines* строк в указанное окно над текущей строкой. *nlines* нижних строк теряются. При отрицательном *nlines* удаляет *nlines* строк, начиная с той, на которой находится курсор, и сдвигает оставшиеся строки вверх. Нижние *nlines* строк очищаются. Текущая позиция курсора остаётся неизменной.840841### Чтение ввода842843#### `window.getch([y, x])`844845Get a character. Note that the integer returned does *not* have to be in ASCII range: function keys, keypad keys and so on are represented by numbers higher than 255. In no-delay mode, return `-1` if there is no input, otherwise wait until a key is pressed. A multibyte character is returned as its encoded bytes one at a time; use [`get_wch()`](https://python-all.ru/3.16/library/curses.html#curses.window.get_wch) to read it as a single character.846847#### `window.get_wch([y, x])`848849Получить широкий символ. Возвращает символ для большинства клавиш или целое число для функциональных клавиш, клавиш цифровой клавиатуры и других специальных клавиш. В отличие от [`getch()`](https://python-all.ru/3.16/library/curses.html#curses.window.getch), обычная клавиша возвращается как односимвольная [`str`](https://python-all.ru/3.16/library/stdtypes.html#str). В режиме без задержки вызывает исключение, если ввода нет.850851Добавлено в версии 3.3.852853Изменено в версии 3.16.0a0 (не выпущена): Также доступно в узкой сборке, где может быть возвращён только символ, представимый одним байтом (8-битная локаль).854855#### `window.getkey([y, x])`856857Возвращает символ в виде строки, а не целого числа, как [`getch()`](https://python-all.ru/3.16/library/curses.html#curses.window.getch). Функциональные клавиши, клавиши цифровой клавиатуры и другие специальные клавиши возвращают многобайтовую строку, содержащую имя клавиши. В режиме без задержки, если нет ввода, генерируется исключение.858859#### `window.getstr()`860861#### `window.getstr(n)`862863#### `window.getstr(y, x)`864865#### `window.getstr(y, x, n)`866867Считывает объект bytes от пользователя с возможностью примитивного редактирования строки. Максимум *n* символов читается; *n* по умолчанию равен 2047 и не может его превышать. Многобайтовый символ возвращается в виде закодированных байтов; используйте [`get_wstr()`](https://python-all.ru/3.16/library/curses.html#curses.window.get_wstr) для чтения ввода как [`str`](https://python-all.ru/3.16/library/stdtypes.html#str).868869Изменено в версии 3.14: Максимальное значение *n* увеличено с 1023 до 2047.870871#### `window.get_wstr()`872873#### `window.get_wstr(n)`874875#### `window.get_wstr(y, x)`876877#### `window.get_wstr(y, x, n)`878879Считывает строку от пользователя с возможностью примитивного редактирования строки. В отличие от [`getstr()`](https://python-all.ru/3.16/library/curses.html#curses.window.getstr), может возвращать символы, непредставимые в кодировке окна. Максимум *n* символов читается; *n* по умолчанию равен 2047 и не может его превышать.880881Добавлено в версии 3.16.0a0 (не выпущена).882883#### `window.getdelay()`884885Возвращает тайм-аут чтения окна в миллисекундах, заданный с помощью [`nodelay()`](https://python-all.ru/3.16/library/curses.html#curses.window.nodelay) или [`timeout()`](https://python-all.ru/3.16/library/curses.html#curses.window.timeout): `-1` для блокирующего режима, `0` для неблокирующего, или положительное число миллисекунд.886887Добавлено в версии 3.16.0a0 (не выпущена).888889### Чтение содержимого окна890891#### `window.inch([y, x])`892893Возвращает символ в заданной позиции окна. Младшие 8 бит – это сам символ, а старшие биты – атрибуты; извлеките их с помощью битовых масок [`A_CHARTEXT`](https://python-all.ru/3.16/library/curses.html#curses.A_CHARTEXT) и [`A_ATTRIBUTES`](https://python-all.ru/3.16/library/curses.html#curses.A_ATTRIBUTES), а цветовую пару – с помощью [`pair_number()`](https://python-all.ru/3.16/library/curses.html#curses.pair_number). Он не может представлять ячейку, содержащую комбинируемые символы, символ, не помещающийся в один байт, или цветовую пару вне диапазона [`color_pair()`](https://python-all.ru/3.16/library/curses.html#curses.color_pair); используйте [`in_wch()`](https://python-all.ru/3.16/library/curses.html#curses.window.in_wch) для таких случаев, он возвращает их как [`complexchar`](https://python-all.ru/3.16/library/curses.html#curses.complexchar).894895#### `window.in_wch([y, x])`896897Возвращает составной символ в заданной позиции окна как [`complexchar`](https://python-all.ru/3.16/library/curses.html#curses.complexchar). В отличие от [`inch()`](https://python-all.ru/3.16/library/curses.html#curses.window.inch), возвращаемый объект содержит текст ячейки (разделительный символ, за которым могут следовать комбинируемые символы) вместе с его атрибутами и цветовой парой.898899Добавлено в версии 3.16.0a0 (не выпущена).900901#### `window.instr([n])`902903#### `window.instr(y, x[, n])`904905Возвращает объект bytes, содержащий символы, извлечённые из окна, начиная с текущей позиции курсора или с *y*, *x*, если указано, и до конца строки. Атрибуты и информация о цвете удаляются из символов. Если указан *n*, `instr()` возвращает строку длиной не более *n* символов (не включая завершающий NUL). Максимальное значение *n* – 2047. Символ, который нельзя представить в кодировке окна, не может быть возвращён; используйте [`in_wstr()`](https://python-all.ru/3.16/library/curses.html#curses.window.in_wstr) для таких случаев.906907Изменено в версии 3.14: Максимальное значение *n* увеличено с 1023 до 2047.908909#### `window.in_wstr([n])`910911#### `window.in_wstr(y, x[, n])`912913Возвращает строку символов, извлечённых из окна, начиная с текущей позиции курсора или с *y*, *x*, если указано. В отличие от [`instr()`](https://python-all.ru/3.16/library/curses.html#curses.window.instr), этот метод может возвращать символы, которые нельзя представить в кодировке окна. Атрибуты и информация о цвете удаляются из символов. Максимальное значение *n* – 2047.914915Добавлено в версии 3.16.0a0 (не выпущено).916917#### `window.in_wchstr([n])`918919#### `window.in_wchstr(y, x[, n])`920921Возвращает [`complexstr`](https://python-all.ru/3.16/library/curses.html#curses.complexstr) оформленных ячеек, извлечённых из окна, начиная с текущей позиции курсора или с *y*, *x*, если указано, и до конца строки. Это вариант методов [`instr()`](https://python-all.ru/3.16/library/curses.html#curses.window.instr) и [`in_wstr()`](https://python-all.ru/3.16/library/curses.html#curses.window.in_wstr), который *сохраняет* атрибуты и цветовую пару каждой ячейки (те методы удаляют оформление). Если указан *n*, возвращается не более *n* ячеек. Максимальное значение *n* – 2047.922923Результат можно записать обратно без изменений с помощью [`addstr()`](https://python-all.ru/3.16/library/curses.html#curses.window.addstr) (чтение и запись – это циклическая операция, которая сохраняет оформление каждой ячейки).924925Добавлено в версии 3.16.0a0 (не выпущено).926927### Атрибуты928929#### `window.attroff(attr)`930931Удаляет атрибут *attr* из набора «фоновых» атрибутов, применяемых ко всем записям в текущее окно.932933#### `window.attron(attr)`934935Добавляет атрибут *attr* к набору «фоновых» атрибутов, применяемых ко всем записям в текущее окно.936937#### `window.attrset(attr)`938939Устанавливает набор «фоновых» атрибутов равным *attr*. Изначально этот набор равен `0` (без атрибутов).940941#### `window.attr_get()`942943Возвращает текущее оформление окна в виде кортежа `(attrs, pair)`, где *attrs* – это набор атрибутов, а *pair* – номер цветовой пары.944945В отличие от [`attron()`](https://python-all.ru/3.16/library/curses.html#curses.window.attron) и подобных методов, которые принимают упакованные атрибуты `A_*`, этот метод и другие методы `attr_*` работают с [атрибутами WA\_\*](https://python-all.ru/3.16/library/curses.html#curses-wa-constants) и хранят номер цветовой пары отдельно, что позволяет использовать цветовые пары, которые вместе с атрибутами не помещаются в одно значение.946947Добавлено в версии 3.16.0a0 (не выпущено).948949#### `window.attr_set(attr, pair=0)`950951Устанавливает оформление окна: атрибуты *attr* и цветовую пару *pair*.952953Добавлено в версии 3.16.0a0 (не выпущено).954955#### `window.attr_on(attr)`956957Включает атрибуты *attr*, не затрагивая остальные.958959Добавлено в версии 3.16.0a0 (не выпущено).960961#### `window.attr_off(attr)`962963Выключает атрибуты *attr*, не затрагивая остальные.964965Добавлено в версии 3.16.0a0 (не выпущено).966967#### `window.color_set(pair)`968969Устанавливает цветовую пару окна в *pair*, оставляя остальные атрибуты без изменений.970971Добавлено в версии 3.16.0a0 (не выпущено).972973#### `window.getattrs()`974975Возвращает текущие атрибуты окна.976977Добавлено в версии 3.16.0a0 (не выпущена).978979#### `window.standout()`980981Включить атрибут *A\_STANDOUT*.982983#### `window.standend()`984985Выключить атрибут выделения (standout). На некоторых терминалах это имеет побочный эффект выключения всех атрибутов.986987#### `window.chgat(attr)`988989#### `window.chgat(num, attr)`990991#### `window.chgat(y, x, attr)`992993#### `window.chgat(y, x, num, attr)`994995Устанавливает атрибуты *num* символов в текущей позиции курсора или в позиции `(y, x)`, если она указана. Если *num* не задан или равен `-1`, атрибут будет установлен для всех символов до конца строки. Эта функция перемещает курсор в позицию `(y, x)`, если она указана. Изменённая строка будет помечена с помощью метода [`touchline()`](https://python-all.ru/3.16/library/curses.html#curses.window.touchline), чтобы её содержимое было перерисовано при следующем обновлении окна.996997### Предыстория998999#### `window.bkgd(ch[, attr])`10001001Устанавливает фоновое свойство окна на символ *ch* с атрибутами *attr*. Затем изменение применяется ко всем позициям символов в этом окне:10021003- Атрибут каждого символа в окне изменяется на новый фоновый атрибут.1004- Везде, где встречается прежний фоновый символ, он заменяется на новый фоновый символ.10051006Изменено в версии 3.16.0a0 (не выпущена): Широкие и комбинирующие символы, а также ячейки [`complexchar`](https://python-all.ru/3.16/library/curses.html#curses.complexchar) теперь принимаются.10071008#### `window.bkgdset(ch[, attr])`10091010Устанавливает фон окна. Фон окна состоит из символа и любой комбинации атрибутов. Часть атрибута фона комбинируется (логическим ИЛИ) со всеми непустыми символами, которые записываются в окно. Как символьная, так и атрибутная части фона комбинируются с пустыми символами. Фон становится свойством символа и перемещается вместе с символом при любых операциях прокрутки, вставки/удаления строк/символов.10111012Изменено в версии 3.16.0a0 (не выпущена): Широкие и комбинирующие символы, а также ячейки [`complexchar`](https://python-all.ru/3.16/library/curses.html#curses.complexchar) теперь принимаются.10131014#### `window.getbkgd()`10151016Возвращает текущую пару символ/атрибут фона указанного окна. Её компоненты можно извлечь аналогично [`inch()`](https://python-all.ru/3.16/library/curses.html#curses.window.inch). Она не может представлять фон, установленный с широким символом или с цветовой парой вне диапазона [`color_pair()`](https://python-all.ru/3.16/library/curses.html#curses.color_pair); для таких случаев используйте [`getbkgrnd()`](https://python-all.ru/3.16/library/curses.html#curses.window.getbkgrnd).10171018#### `window.getbkgrnd()`10191020Возвращает текущий фон указанного окна в виде [`complexchar`](https://python-all.ru/3.16/library/curses.html#curses.complexchar). В отличие от [`getbkgd()`](https://python-all.ru/3.16/library/curses.html#curses.window.getbkgd), возвращаемый объект содержит символ фона вместе с его атрибутами и цветовой парой, причём цветовая пара не ограничена значением, помещающимся в [`color_pair()`](https://python-all.ru/3.16/library/curses.html#curses.color_pair).10211022Добавлено в версии 3.16.0a0 (не выпущена).10231024### Очистка и удаление10251026#### `window.erase()`10271028Очищает окно.10291030#### `window.clear()`10311032Как [`erase()`](https://python-all.ru/3.16/library/curses.html#curses.window.erase), но также вызывает перерисовку всего окна при следующем вызове [`refresh()`](https://python-all.ru/3.16/library/curses.html#curses.window.refresh).10331034#### `window.clrtobot()`10351036Стирает от курсора до конца окна: все строки ниже курсора удаляются, а затем выполняется эквивалент [`clrtoeol()`](https://python-all.ru/3.16/library/curses.html#curses.window.clrtoeol).10371038#### `window.clrtoeol()`10391040Стирает от курсора до конца строки.10411042### Границы и линии10431044#### `window.border([ls[, rs[, ts[, bs[, tl[, tr[, bl[, br]]]]]]]])`10451046Рисует рамку по краям окна. Каждый параметр задаёт символ для конкретной части рамки; см. таблицу ниже для более подробной информации.10471048> **Примечание**1049>1050> Значение `0` для любого параметра приводит к использованию символа по умолчанию для этого параметра. Именованные параметры могут *не* быть использованы. Значения по умолчанию перечислены в этой таблице:10511052| Параметр | Описание | Значение по умолчанию |1053| --- | --- | --- |1054| *ls* | Левая сторона | [`ACS_VLINE`](https://python-all.ru/3.16/library/curses.html#curses.ACS_VLINE) |1055| *rs* | Правая сторона | [`ACS_VLINE`](https://python-all.ru/3.16/library/curses.html#curses.ACS_VLINE) |1056| *ts* | Верх | [`ACS_HLINE`](https://python-all.ru/3.16/library/curses.html#curses.ACS_HLINE) |1057| *bs* | Низ | [`ACS_HLINE`](https://python-all.ru/3.16/library/curses.html#curses.ACS_HLINE) |1058| *tl* | Верхний левый угол | [`ACS_ULCORNER`](https://python-all.ru/3.16/library/curses.html#curses.ACS_ULCORNER) |1059| *tr* | Верхний правый угол | [`ACS_URCORNER`](https://python-all.ru/3.16/library/curses.html#curses.ACS_URCORNER) |1060| *bl* | Нижний левый угол | [`ACS_LLCORNER`](https://python-all.ru/3.16/library/curses.html#curses.ACS_LLCORNER) |1061| *br* | Нижний правый угол | [`ACS_LRCORNER`](https://python-all.ru/3.16/library/curses.html#curses.ACS_LRCORNER) |10621063Изменено в версии 3.16.0a0 (не выпущена): Широкие и комбинирующие символы, а также ячейки [`complexchar`](https://python-all.ru/3.16/library/curses.html#curses.complexchar) теперь принимаются. Один вызов не может смешивать их с целочисленными или байтовыми символами.10641065#### `window.box([vertch, horch])`10661067Аналогично [`border()`](https://python-all.ru/3.16/library/curses.html#curses.window.border), но оба *ls* и *rs* – это *vertch*, а оба *ts* и *bs* – это *horch*. Символы углов по умолчанию всегда используются этой функцией.10681069Изменено в версии 3.16.0a0 (не выпущена): Широкие и комбинирующие символы, а также ячейки [`complexchar`](https://python-all.ru/3.16/library/curses.html#curses.complexchar) теперь принимаются. Один вызов не может смешивать их с целочисленными или байтовыми символами.10701071#### `window.hline(ch, n[, attr])`10721073#### `window.hline(y, x, ch, n[, attr])`10741075Отображает горизонтальную линию, начинающуюся в `(y, x)`, длиной *n*, состоящую из символа *ch* с атрибутами *attr*. Линия обрывается у правого края окна, если доступно меньше *n* ячеек.10761077Изменено в версии 3.16.0a0 (не выпущена): Широкие и комбинирующие символы, а также ячейки [`complexchar`](https://python-all.ru/3.16/library/curses.html#curses.complexchar) теперь принимаются.10781079#### `window.vline(ch, n[, attr])`10801081#### `window.vline(y, x, ch, n[, attr])`10821083Отображает вертикальную линию, начинающуюся в `(y, x)`, длиной *n*, состоящую из символа *ch* с атрибутами *attr*.10841085Изменено в версии 3.16.0a0 (не выпущена): Широкие и комбинирующие символы, а также ячейки [`complexchar`](https://python-all.ru/3.16/library/curses.html#curses.complexchar) теперь принимаются.10861087### Позиция курсора и геометрия окна10881089#### `window.move(new_y, new_x)`10901091Перемещает курсор в `(new_y, new_x)`.10921093#### `window.getyx()`10941095Возвращает кортеж `(y, x)` с текущей позицией курсора относительно верхнего левого угла окна.10961097#### `window.getbegyx()`10981099Возвращает кортеж `(y, x)` с координатами верхнего левого угла.11001101#### `window.getmaxyx()`11021103Возвращает кортеж `(y, x)` из высоты и ширины окна.11041105#### `window.getparyx()`11061107Возвращает начальные координаты этого окна относительно родительского окна в виде кортежа `(y, x)`. Возвращает `(-1, -1)`, если у этого окна нет родителя.11081109#### `window.getparent()`11101111Возвращает родительское окно этого подокна или `None`, если это окно не является подокном.11121113Добавлено в версии 3.16.0a0 (не выпущена).11141115### Создание и изменение размера окон11161117#### `window.subwin(begin_y, begin_x)`11181119#### `window.subwin(nlines, ncols, begin_y, begin_x)`11201121Возвращает подокно, левый верхний угол которого находится в экранных координатах `(begin_y, begin_x)`, а ширина/высота равна *ncols*/*nlines*.11221123По умолчанию подокно будет простираться от указанной позиции до нижнего правого угла окна.11241125#### `window.derwin(begin_y, begin_x)`11261127#### `window.derwin(nlines, ncols, begin_y, begin_x)`11281129Сокращение от «derive window», `derwin()` аналогично вызову [`subwin()`](https://python-all.ru/3.16/library/curses.html#curses.window.subwin), за исключением того, что *begin\_y* и *begin\_x* задаются относительно начала окна, а не всего экрана. Возвращает объект окна для производного окна.11301131#### `window.subpad(begin_y, begin_x)`11321133#### `window.subpad(nlines, ncols, begin_y, begin_x)`11341135Возвращает подпанель, левый верхний угол которой находится в `(begin_y, begin_x)`, а ширина/высота равна *ncols*/*nlines*. Координаты задаются относительно родительской панели (в отличие от [`subwin()`](https://python-all.ru/3.16/library/curses.html#curses.window.subwin), который использует экранные координаты). Этот метод доступен только для панелей, созданных с помощью [`newpad()`](https://python-all.ru/3.16/library/curses.html#curses.newpad).11361137#### `window.dupwin()`11381139Возвращает новое окно, которое является точной копией исходного: оно имеет те же размер, позицию, содержимое и атрибуты. В отличие от окна, созданного с помощью [`subwin()`](https://python-all.ru/3.16/library/curses.html#curses.window.subwin) или [`derwin()`](https://python-all.ru/3.16/library/curses.html#curses.window.derwin), копия независима от оригинала – у неё собственный буфер ячеек, поэтому последующие изменения в одном окне не влияют на другое.11401141Добавлено в версии 3.16.0a0 (не выпущена).11421143#### `window.mvwin(new_y, new_x)`11441145Перемещает окно так, чтобы его верхний левый угол находился в `(new_y, new_x)`.11461147Перемещение окна так, чтобы какая-либо его часть оказалась за пределами экрана, является ошибкой: окно не перемещается и возбуждается [`curses.error`](https://python-all.ru/3.16/library/curses.html#curses.error).11481149#### `window.mvderwin(y, x)`11501151Перемещает окно внутри его родительского окна. Экранно-относительные параметры окна не изменяются. Эта процедура используется для отображения разных частей родительского окна в одной и той же физической позиции на экране.11521153#### `window.resize(nlines, ncols)`11541155Перераспределить память для окна curses, чтобы изменить его размеры до указанных значений. Если любой из размеров больше текущих, данные окна заполняются пробелами, в которые влито текущее оформление фона (заданное с помощью [`bkgdset()`](https://python-all.ru/3.16/library/curses.html#curses.window.bkgdset)).11561157### Обновление и перерисовка11581159#### `window.refresh([pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol])`11601161Обновить отображение немедленно (синхронизировать фактический экран с предыдущими методами рисования/удаления).11621163Эти шесть аргументов можно указывать (и они становятся обязательными) только в том случае, если окно является панелью, созданной с помощью [`newpad()`](https://python-all.ru/3.16/library/curses.html#curses.newpad). Дополнительные параметры нужны для указания того, какая часть панели и экрана участвует. *pminrow* и *pmincol* задают верхний левый угол прямоугольника, отображаемого в панели. *sminrow*, *smincol*, *smaxrow* и *smaxcol* задают границы прямоугольника, отображаемого на экране. Нижний правый угол прямоугольника в панели вычисляется из координат экрана, так как прямоугольники должны быть одного размера. Оба прямоугольника должны полностью помещаться в соответствующих структурах. Отрицательные значения *pminrow*, *pmincol*, *sminrow* или *smincol* обрабатываются как нулевые.11641165#### `window.noutrefresh()`11661167#### `window.noutrefresh(pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol)`11681169Пометить для обновления, но подождать. Эта функция обновляет структуру данных, представляющую желаемое состояние окна, но не принуждает к обновлению физического экрана. Для этого нужно вызвать [`doupdate()`](https://python-all.ru/3.16/library/curses.html#curses.doupdate).11701171Шесть аргументов можно указывать (и они становятся обязательными) только в том случае, если окно является панелью, созданной с помощью [`newpad()`](https://python-all.ru/3.16/library/curses.html#curses.newpad); их смысл совпадает с [`refresh()`](https://python-all.ru/3.16/library/curses.html#curses.window.refresh).11721173#### `window.redrawln(beg, num)`11741175Указать, что *num* строк экрана, начиная со строки *beg*, повреждены и должны быть полностью перерисованы при следующем вызове [`refresh()`](https://python-all.ru/3.16/library/curses.html#curses.window.refresh).11761177#### `window.redrawwin()`11781179Пометить всё окно как изменённое, что приведёт к его полной перерисовке при следующем вызове [`refresh()`](https://python-all.ru/3.16/library/curses.html#curses.window.refresh).11801181### Параметры вывода11821183#### `window.clearok(flag)`11841185Если *flag* равен `True`, следующий вызов [`refresh()`](https://python-all.ru/3.16/library/curses.html#curses.window.refresh) полностью очистит окно.11861187#### `window.idlok(flag)`11881189Если *flag* равен `True`, `curses` попытается использовать аппаратные средства редактирования строк. В противном случае curses не будет их использовать.11901191#### `window.idcok(flag)`11921193Если *flag* равен `False`, curses больше не будет использовать аппаратную возможность терминала для вставки/удаления символов; если *flag* равен `True`, использование вставки и удаления символов включается. При первой инициализации curses вставка/удаление символов включены по умолчанию.11941195#### `window.immedok(flag)`11961197Если *flag* равен `True`, любое изменение изображения окна автоматически вызывает его обновление; больше не нужно вызывать [`refresh()`](https://python-all.ru/3.16/library/curses.html#curses.window.refresh) вручную. Однако это может значительно снизить производительность из-за многократных вызовов wrefresh. Эта опция отключена по умолчанию.11981199#### `window.leaveok(flag)`12001201Если *flag* равен `True`, курсор после обновления остаётся на месте, а не перемещается в «позицию курсора». Это уменьшает перемещение курсора, где это возможно.12021203Если *flag* равен `False`, курсор всегда будет находиться в «позиции курсора» после обновления.12041205#### `window.scrollok(flag)`12061207Управляет тем, что происходит, когда курсор окна выходит за край окна или области прокрутки, будь то в результате перевода строки на нижней строке или ввода последнего символа последней строки. Если *flag* равен `False`, курсор остаётся на нижней строке. Если *flag* равен `True`, окно прокручивается на одну строку вверх. Обратите внимание: для получения физического эффекта прокрутки на терминале необходимо также вызвать [`idlok()`](https://python-all.ru/3.16/library/curses.html#curses.window.idlok).12081209#### `window.scroll([lines=1])`12101211Прокрутить экран или область прокрутки. Прокрутка вверх на *lines* строк, если *lines* положительно, или вниз, если отрицательно. Прокрутка не действует, если она не была включена для окна с помощью [`scrollok()`](https://python-all.ru/3.16/library/curses.html#curses.window.scrollok).12121213#### `window.setscrreg(top, bottom)`12141215Установить область прокрутки от строки *top* до строки *bottom*. Все действия прокрутки будут происходить в этой области.12161217#### `window.getscrreg()`12181219Возвращает кортеж `(top, bottom)` с текущей областью прокрутки окна, как задано [`setscrreg()`](https://python-all.ru/3.16/library/curses.html#curses.window.setscrreg).12201221Добавлено в версии 3.16.0a0 (не выпущена).12221223#### `window.syncok(flag)`12241225Если *flag* равен `True`, то [`syncup()`](https://python-all.ru/3.16/library/curses.html#curses.window.syncup) вызывается автоматически при любом изменении в окне.12261227### Параметры ввода12281229#### `window.keypad(flag)`12301231Если *flag* равен `True`, escape-последовательности, генерируемые некоторыми клавишами (цифровая клавиатура, функциональные клавиши), будут интерпретироваться `curses`. Если *flag* равен `False`, escape-последовательности останутся во входном потоке как есть.12321233#### `window.nodelay(flag)`12341235Если *flag* равен `True`, [`getch()`](https://python-all.ru/3.16/library/curses.html#curses.window.getch) будет неблокирующим.12361237#### `window.notimeout(flag)`12381239Если *flag* равен `True`, для управляющих последовательностей не будет установлен тайм-аут.12401241Если *flag* равен `False`, через несколько миллисекунд управляющая последовательность не будет интерпретирована и останется во входном потоке как есть.12421243#### `window.timeout(delay)`12441245Устанавливает блокирующее или неблокирующее чтение для окна. Если *delay* отрицательный, используется блокирующее чтение (ожидание ввода неопределённо долго). Если *delay* равен нулю, используется неблокирующее чтение, и [`getch()`](https://python-all.ru/3.16/library/curses.html#curses.window.getch) вернёт `-1`, если ввода нет. Если *delay* положительный, то `getch()` будет ждать *delay* миллисекунд и вернёт `-1`, если по истечении этого времени ввода всё ещё нет.12461247### Наложение и касание12481249#### `window.overlay(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol])`12501251Наложить окно поверх *destwin*. Окна необязательно должны быть одного размера – копируется только область пересечения. Это копирование неразрушающее, то есть текущий символ фона не перезаписывает старое содержимое *destwin*.12521253Для более точного контроля над копируемой областью можно использовать вторую форму `overlay()`. *sminrow* и *smincol* – это координаты верхнего левого угла исходного окна, а остальные переменные задают прямоугольник в целевом окне.12541255#### `window.overwrite(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol])`12561257Перезаписать окно поверх *destwin*. Окна необязательно должны быть одного размера – в этом случае копируется только область пересечения. Это копирование разрушающее, то есть текущий символ фона перезаписывает старое содержимое *destwin*.12581259Для более точного контроля над копируемой областью можно использовать вторую форму `overwrite()`. *sminrow* и *smincol* – это координаты верхнего левого угла исходного окна, а остальные переменные задают прямоугольник в целевом окне.12601261#### `window.touchline(start, count[, changed])`12621263Считает, что *count* строк были изменены, начиная со строки *start*. Если указан *changed*, он определяет, помечаются ли затронутые строки как изменённые (*changed*`=True`) или неизменённые (*changed*`=False`).12641265#### `window.touchwin()`12661267Считает, что всё окно было изменено, в целях оптимизации отрисовки.12681269#### `window.untouchwin()`12701271Помечает все строки в окне как неизменённые с момента последнего вызова [`refresh()`](https://python-all.ru/3.16/library/curses.html#curses.window.refresh).12721273#### `window.syncup()`12741275Помечает все позиции в родительских окнах данного окна, которые были изменены в окне.12761277#### `window.syncdown()`12781279Помечает каждую позицию в окне, которая была изменена в любом из его родительских окон. Эта процедура вызывается [`refresh()`](https://python-all.ru/3.16/library/curses.html#curses.window.refresh), поэтому почти никогда не требуется вызывать её вручную.12801281#### `window.cursyncup()`12821283Обновляет текущую позицию курсора всех родительских окон, чтобы она отражала текущую позицию курсора данного окна.12841285### Преобразование координат12861287#### `window.enclose(y, x)`12881289Проверяет, находятся ли указанные координаты символьных ячеек относительно экрана внутри данного окна, возвращая `True` или `False`. Полезно для определения того, какое подмножество окон экрана содержит положение события мыши.12901291Изменено в версии 3.10: Ранее возвращалось `1` или `0` вместо `True` или `False`.12921293#### `window.mouse_trafo(y, x, to_screen)`12941295Преобразует координаты символьных ячеек между оконными и экранными (относительно `stdscr`). Если *to\_screen* равно true, преобразует оконные координаты *y*, *x* в экранные; в противном случае преобразует в обратном направлении. Две системы координат различаются, когда на экране зарезервированы строки, например, для программных меток.12961297Возвращает преобразованные координаты в виде кортежа `(y, x)` или `None`, если они находятся за пределами окна.12981299Добавлено в версии 3.16.0a0 (не выпущена).13001301### Прочее13021303#### `window.encoding`13041305Кодировка, используемая для кодирования аргументов методов (строки и символы Unicode). Атрибут encoding наследуется от родительского окна при создании дочернего окна, например с помощью [`window.subwin()`](https://python-all.ru/3.16/library/curses.html#curses.window.subwin). По умолчанию используется кодировка текущей локали (см. [`locale.getencoding()`](https://python-all.ru/3.16/library/locale.html#locale.getencoding)).13061307Добавлено в версии 3.3.13081309#### `window.putwin(file)`13101311Записать все данные, связанные с окном, в переданный файловый объект. Эту информацию можно будет позже получить с помощью функции [`getwin()`](https://python-all.ru/3.16/library/curses.html#curses.getwin).13121313#### `window.use(func, /, *args, **kwargs)`13141315Вызывает `func(window, *args, **kwargs)`, удерживая блокировку окна, и возвращает результат. Это обеспечивает автоматическую защиту окна от одновременного доступа из другого потока.13161317Доступность: если базовая библиотека curses предоставляет `use_window()`.13181319Добавлено в версии 3.16.0a0 (не выпущена).13201321### Запросы состояния13221323#### `window.is_cleared()`13241325Возвращает текущее значение, установленное [`clearok()`](https://python-all.ru/3.16/library/curses.html#curses.window.clearok).13261327Добавлено в версии 3.16.0a0 (не выпущена).13281329#### `window.is_idcok()`13301331Возвращает текущее значение, установленное [`idcok()`](https://python-all.ru/3.16/library/curses.html#curses.window.idcok).13321333Добавлено в версии 3.16.0a0 (не выпущена).13341335#### `window.is_idlok()`13361337Возвращает текущее значение, установленное [`idlok()`](https://python-all.ru/3.16/library/curses.html#curses.window.idlok).13381339Добавлено в версии 3.16.0a0 (не выпущена).13401341#### `window.is_immedok()`13421343Возвращает текущее значение, установленное [`immedok()`](https://python-all.ru/3.16/library/curses.html#curses.window.immedok).13441345Добавлено в версии 3.16.0a0 (не выпущена).13461347#### `window.is_keypad()`13481349Возвращает текущее значение, установленное [`keypad()`](https://python-all.ru/3.16/library/curses.html#curses.window.keypad).13501351Добавлено в версии 3.16.0a0 (не выпущена).13521353#### `window.is_leaveok()`13541355Возвращает текущее значение, установленное [`leaveok()`](https://python-all.ru/3.16/library/curses.html#curses.window.leaveok).13561357Добавлено в версии 3.16.0a0 (не выпущена).13581359#### `window.is_linetouched(line)`13601361Возвращает `True`, если указанная строка была изменена после последнего вызова [`refresh()`](https://python-all.ru/3.16/library/curses.html#curses.window.refresh); в противном случае возвращает `False`. Вызывает исключение [`curses.error`](https://python-all.ru/3.16/library/curses.html#curses.error), если *line* недопустима для данного окна.13621363#### `window.is_nodelay()`13641365Возвращает текущее значение, установленное [`nodelay()`](https://python-all.ru/3.16/library/curses.html#curses.window.nodelay).13661367Добавлено в версии 3.16.0a0 (не выпущена).13681369#### `window.is_notimeout()`13701371Возвращает текущее значение, установленное [`notimeout()`](https://python-all.ru/3.16/library/curses.html#curses.window.notimeout).13721373Добавлено в версии 3.16.0a0 (не выпущена).13741375#### `window.is_pad()`13761377Возвращает `True`, если окно является pad, созданным с помощью [`newpad()`](https://python-all.ru/3.16/library/curses.html#curses.newpad).13781379Добавлено в версии 3.16.0a0 (не выпущена).13801381#### `window.is_scrollok()`13821383Возвращает текущее значение, установленное [`scrollok()`](https://python-all.ru/3.16/library/curses.html#curses.window.scrollok).13841385Добавлено в версии 3.16.0a0 (не выпущена).13861387#### `window.is_subwin()`13881389Возвращает `True`, если окно является подокном, созданным с помощью [`subwin()`](https://python-all.ru/3.16/library/curses.html#curses.window.subwin) или [`derwin()`](https://python-all.ru/3.16/library/curses.html#curses.window.derwin).13901391Добавлено в версии 3.16.0a0 (не выпущена).13921393#### `window.is_syncok()`13941395Возвращает текущее значение, установленное [`syncok()`](https://python-all.ru/3.16/library/curses.html#curses.window.syncok).13961397Добавлено в версии 3.16.0a0 (не выпущена).13981399#### `window.is_wintouched()`14001401Возвращает `True`, если указанное окно было изменено после последнего вызова [`refresh()`](https://python-all.ru/3.16/library/curses.html#curses.window.refresh); в противном случае возвращает `False`.14021403## Объекты экрана14041405#### `class curses.screen`14061407Объект *экран* представляет терминал, инициализированный вызовом [`newterm()`](https://python-all.ru/3.16/library/curses.html#curses.newterm) (или [`new_prescr()`](https://python-all.ru/3.16/library/curses.html#curses.new_prescr)), в дополнение к экрану по умолчанию, созданному вызовом [`initscr()`](https://python-all.ru/3.16/library/curses.html#curses.initscr). Объекты экрана возвращаются этими функциями; их нельзя создать напрямую.14081409Экран освобождается автоматически, как только на него больше нет ссылок, ни напрямую, ни через одно из его окон. Каждое окно поддерживает экран в рабочем состоянии, поэтому экран остаётся действительным, пока существует хотя бы одно из его окон.14101411Добавлено в версии 3.16.0a0 (не выпущена).14121413#### `screen.close()`14141415Отсоединяет стандартное окно экрана, разрывая циклическую ссылку между ними, чтобы экран мог быть освобождён немедленно, а не ждать сборки мусора. После этого [`stdscr`](https://python-all.ru/3.16/library/curses.html#curses.screen.stdscr) становится `None`, и окно, которое он вернул ранее, больше нельзя использовать. Ресурсы экрана освобождаются, как только на него и на все его окна перестают существовать ссылки.14161417Добавлено в версии 3.16.0a0 (не выпущена).14181419#### `screen.stdscr`14201421Стандартное [окно](https://python-all.ru/3.16/library/curses.html#curses-window-objects) экрана, покрывающее весь терминал, или `None` для экрана, созданного вызовом [`new_prescr()`](https://python-all.ru/3.16/library/curses.html#curses.new_prescr).14221423#### `screen.use(func, /, *args, **kwargs)`14241425Вызывает `func(screen, *args, **kwargs)` с удержанием блокировки экрана и возвращает результат. Это обеспечивает автоматическую защиту экрана от одновременного доступа из другого потока.14261427Доступность: если базовая библиотека curses предоставляет `use_screen()`.14281429Добавлено в версии 3.16.0a0 (не выпущено).14301431## Объекты сложных символов14321433#### `class curses.complexchar(text, /, attr=0, pair=0)`14341435*Сложный символ* (или *complexchar*) – это неизменяемая стилизованная ячейка символа: пробельный символ, за которым могут следовать комбинирующие символы, вместе с набором атрибутов и цветовой парой.14361437*text* – это текст ячейки, *attr* – комбинация [атрибутов WA\_\*](https://python-all.ru/3.16/library/curses.html#curses-wa-constants) (эквивалентная соответствующим константам `A_*`), а *pair* – номер цветовой пары. В отличие от упакованного [`chtype`](https://python-all.ru/3.16/library/functions.html#int), используемого методами [`inch()`](https://python-all.ru/3.16/library/curses.html#curses.window.inch) и `A_*`, цветовая пара хранится отдельно и не ограничена значением, которое помещается в [`color_pair()`](https://python-all.ru/3.16/library/curses.html#curses.color_pair).14381439Сложные символы возвращаются функциями [`window.in_wch()`](https://python-all.ru/3.16/library/curses.html#curses.window.in_wch) и [`window.getbkgrnd()`](https://python-all.ru/3.16/library/curses.html#curses.window.getbkgrnd) и принимаются (наряду с целым числом, байтом или строкой) методами ячеек символов, такими как [`window.addch()`](https://python-all.ru/3.16/library/curses.html#curses.window.addch), [`window.insch()`](https://python-all.ru/3.16/library/curses.html#curses.window.insch), [`window.bkgd()`](https://python-all.ru/3.16/library/curses.html#curses.window.bkgd), [`window.border()`](https://python-all.ru/3.16/library/curses.html#curses.window.border), [`window.hline()`](https://python-all.ru/3.16/library/curses.html#curses.window.hline) и [`window.vline()`](https://python-all.ru/3.16/library/curses.html#curses.window.vline). Сложный символ уже несёт собственное оформление, поэтому его нельзя комбинировать с явно заданным аргументом *attr*.14401441[`str()`](https://python-all.ru/3.16/library/stdtypes.html#str) возвращает текст ячейки; два сложных символа равны, когда их текст, атрибуты и цветовая пара совпадают.14421443Один и тот же код работает как в широкой, так и в узкой сборке символов. В узкой сборке ячейка содержит один символ (без комбинирующих знаков), который должен кодироваться в один байт в кодировке окна (только 8-битные локали), а *pair* ограничен значением, помещающимся в [`color_pair()`](https://python-all.ru/3.16/library/curses.html#curses.color_pair).14441445#### `attr`14461447Атрибуты ячейки символа (только для чтения).14481449#### `pair`14501451Номер цветовой пары ячейки символа (только для чтения).14521453Добавлено в версии 3.16.0a0 (не выпущено).14541455#### `class curses.complexstr(cells[, attr[, pair]])`14561457*Строка сложных символов* (или *complexstr*) – это неизменяемая последовательность стилизованных ячеек символов – строковый аналог [`complexchar`](https://python-all.ru/3.16/library/curses.html#curses.complexchar) (подобно тому, как [`str`](https://python-all.ru/3.16/library/stdtypes.html#str) – аналог для одного символа).14581459Если *cells* – строка, она разбивается на ячейки символов (каждая – пробельный символ, за которым могут следовать комбинирующие символы), и *attr* (комбинация [атрибутов WA\_\*](https://python-all.ru/3.16/library/curses.html#curses-wa-constants)) и *pair* (номер цветовой пары), если заданы, применяются к каждой ячейке.14601461В противном случае *cells* – это итерируемый объект, элементы которого сами являются ячейками, каждая – [`complexchar`](https://python-all.ru/3.16/library/curses.html#curses.complexchar) или строка; каждый элемент несёт собственное оформление, и *attr* и *pair* должны быть опущены.14621463Он возвращается функцией [`window.in_wchstr()`](https://python-all.ru/3.16/library/curses.html#curses.window.in_wchstr) и принимается функциями [`window.addstr()`](https://python-all.ru/3.16/library/curses.html#curses.window.addstr), [`addnstr()`](https://python-all.ru/3.16/library/curses.html#curses.window.addnstr), [`insstr()`](https://python-all.ru/3.16/library/curses.html#curses.window.insstr) и [`insnstr()`](https://python-all.ru/3.16/library/curses.html#curses.window.insnstr), поэтому последовательность, считанная из окна, может быть записана обратно без изменений.14641465Он ведёт себя как неизменяемая последовательность: `len(s)` – количество ячеек, `s[i]` – *i*-я ячейка в виде [`complexchar`](https://python-all.ru/3.16/library/curses.html#curses.complexchar), срезы и конкатенация создают новые экземпляры `complexstr`, а итерация возвращает ячейки. [`str()`](https://python-all.ru/3.16/library/stdtypes.html#str) возвращает объединённый текст ячеек, и две строки сложных символов равны, когда все их ячейки совпадают. Он хэшируем.14661467Для создания или редактирования последовательности ячеек используйте обычный [`list`](https://python-all.ru/3.16/library/stdtypes.html#list) из [`complexchar`](https://python-all.ru/3.16/library/curses.html#curses.complexchar) (или строк); `complexstr` – это неизменяемая форма, возвращаемая при чтении.14681469Как и [`complexchar`](https://python-all.ru/3.16/library/curses.html#curses.complexchar), этот тип работает как в широкой, так и в узкой сборке символов, с теми же ограничениями на ячейку в узкой сборке.14701471Добавлено в версии 3.16.0a0 (не выпущено).14721473## Константы14741475### Общие14761477Модуль `curses` определяет следующие элементы данных:14781479#### `curses.ERR`14801481Некоторые процедуры curses, возвращающие целое число, такие как [`getch()`](https://python-all.ru/3.16/library/curses.html#curses.window.getch), возвращают [`ERR`](https://python-all.ru/3.16/library/curses.html#curses.ERR) в случае ошибки.14821483#### `curses.OK`14841485Некоторые процедуры curses, возвращающие целое число, такие как [`napms()`](https://python-all.ru/3.16/library/curses.html#curses.napms), возвращают [`OK`](https://python-all.ru/3.16/library/curses.html#curses.OK) в случае успеха.14861487#### `curses.version`14881489Объект bytes, представляющий текущую версию модуля.14901491#### `curses.ncurses_version`14921493Именованный кортеж, содержащий три компонента версии библиотеки ncurses: *major*, *minor* и *patch*. Все значения – целые числа. К компонентам также можно обращаться по имени, так что `curses.ncurses_version[0]` эквивалентно `curses.ncurses_version.major` и так далее.14941495Доступность: если используется библиотека ncurses.14961497Добавлено в версии 3.8.14981499#### `curses.COLORS`15001501Максимальное количество цветов, которое поддерживает терминал. Определяется только после вызова [`start_color()`](https://python-all.ru/3.16/library/curses.html#curses.start_color).15021503#### `curses.COLOR_PAIRS`15041505Максимальное количество цветовых пар, которое поддерживает терминал. Определяется только после вызова [`start_color()`](https://python-all.ru/3.16/library/curses.html#curses.start_color).15061507#### `curses.COLS`15081509Ширина экрана, то есть количество столбцов. Определяется только после вызова [`initscr()`](https://python-all.ru/3.16/library/curses.html#curses.initscr). Обновляется с помощью [`update_lines_cols()`](https://python-all.ru/3.16/library/curses.html#curses.update_lines_cols), [`resizeterm()`](https://python-all.ru/3.16/library/curses.html#curses.resizeterm) и [`resize_term()`](https://python-all.ru/3.16/library/curses.html#curses.resize_term).15101511#### `curses.LINES`15121513Высота экрана, то есть количество строк. Определяется только после вызова [`initscr()`](https://python-all.ru/3.16/library/curses.html#curses.initscr). Обновляется с помощью [`update_lines_cols()`](https://python-all.ru/3.16/library/curses.html#curses.update_lines_cols), [`resizeterm()`](https://python-all.ru/3.16/library/curses.html#curses.resizeterm) и [`resize_term()`](https://python-all.ru/3.16/library/curses.html#curses.resize_term).15141515### Атрибуты15161517Некоторые константы доступны для указания атрибутов ячеек символов. Точный набор доступных констант зависит от системы.15181519| Атрибут | Значение |1520| --- | --- |1521| curses.A\_ALTCHARSET | Режим альтернативного набора символов |1522| curses.A\_BLINK | Режим мигания |1523| curses.A\_BOLD | Режим жирного шрифта |1524| curses.A\_DIM | Режим затемнения |1525| curses.A\_INVIS | Режим невидимого или пустого символа |1526| curses.A\_ITALIC | Курсивный режим |1527| curses.A\_NORMAL | Обычный атрибут |1528| curses.A\_PROTECT | Защищённый режим |1529| curses.A\_REVERSE | Инвертировать цвета фона и переднего плана |1530| curses.A\_STANDOUT | Режим выделения |1531| curses.A\_UNDERLINE | Режим подчёркивания |1532| curses.A\_HORIZONTAL | Горизонтальное выделение |1533| curses.A\_LEFT | Выделение слева |1534| curses.A\_LOW | Слабое выделение |1535| curses.A\_RIGHT | Выделение справа |1536| curses.A\_TOP | Верхнее выделение |1537| curses.A\_VERTICAL | Вертикальное выделение |15381539Добавлено в версии 3.7: `A_ITALIC`.15401541Методы [`attr_get()`](https://python-all.ru/3.16/library/curses.html#curses.window.attr_get), [`attr_set()`](https://python-all.ru/3.16/library/curses.html#curses.window.attr_set), [`attr_on()`](https://python-all.ru/3.16/library/curses.html#curses.window.attr_on) и [`attr_off()`](https://python-all.ru/3.16/library/curses.html#curses.window.attr_off) используют параллельный набор констант `WA_*`. Они имеют тот же смысл, что и соответствующие атрибуты `A_*` выше (`WA_BOLD`, такие как [`A_BOLD`](https://python-all.ru/3.16/library/curses.html#curses.A_BOLD), и так далее), но относятся к типу `attr_t`, а не упаковываются в символ. В ncurses оба набора имеют одинаковые значения, но другие реализации curses могут присваивать им разные, поэтому используйте константы `WA_*` с методами `attr_*`. Доступные имена: `WA_ATTRIBUTES`, `WA_NORMAL`, `WA_STANDOUT`, `WA_UNDERLINE`, `WA_REVERSE`, `WA_BLINK`, `WA_DIM`, `WA_BOLD`, `WA_ALTCHARSET`, `WA_INVIS`, `WA_PROTECT`, `WA_HORIZONTAL`, `WA_LEFT`, `WA_LOW`, `WA_RIGHT`, `WA_TOP`, `WA_VERTICAL` и `WA_ITALIC` (каждая доступна только там, где это определено платформой).15421543Добавлено в версии 3.16.0a0 (не выпущена): Константы `WA_*` были добавлены.15441545Доступно несколько констант для извлечения соответствующих атрибутов, возвращаемых некоторыми методами.15461547| Битовая маска | Значение |1548| --- | --- |1549| curses.A\_ATTRIBUTES | Битовая маска для извлечения атрибутов |1550| curses.A\_CHARTEXT | Битовая маска для извлечения символа |1551| curses.A\_COLOR | Битовая маска для извлечения информации о поле цветовой пары |15521553### Клавиши15541555Клавиши обозначаются целочисленными константами с именами, начинающимися с `KEY_`. Точный набор доступных клавиш зависит от системы.15561557| Константа клавиши | Клавиша |1558| --- | --- |1559| curses.KEY\_MIN | Минимальное значение клавиши |1560| curses.KEY\_BREAK | Клавиша Break (ненадёжно) |1561| curses.KEY\_DOWN | Стрелка вниз |1562| curses.KEY\_UP | Стрелка вверх |1563| curses.KEY\_LEFT | Стрелка влево |1564| curses.KEY\_RIGHT | Стрелка вправо |1565| curses.KEY\_HOME | Клавиша Home (стрелка вверх-влево) |1566| curses.KEY\_BACKSPACE | Backspace (ненадёжно) |1567| curses.KEY\_F0 | Функциональные клавиши. Поддерживается до 64 функциональных клавиш. |1568| curses.KEY\_Fn | Значение функциональной клавиши *n* |1569| curses.KEY\_DL | Удалить строку |1570| curses.KEY\_IL | Вставить строку |1571| curses.KEY\_DC | Удалить символ |1572| curses.KEY\_IC | Вставить символ или войти в режим вставки |1573| curses.KEY\_EIC | Выйти из режима вставки символа |1574| curses.KEY\_CLEAR | Очистить экран |1575| curses.KEY\_EOS | Очистить до конца экрана |1576| curses.KEY\_EOL | Очистить до конца строки |1577| curses.KEY\_SF | Прокрутить на 1 строку вперёд |1578| curses.KEY\_SR | Прокрутка на 1 строку назад (обратное направление) |1579| curses.KEY\_NPAGE | Следующая страница |1580| curses.KEY\_PPAGE | Предыдущая страница |1581| curses.KEY\_STAB | Установить табуляцию |1582| curses.KEY\_CTAB | Очистить табуляцию |1583| curses.KEY\_CATAB | Очистить все табуляции |1584| curses.KEY\_ENTER | Ввод или отправка (ненадёжно) |1585| curses.KEY\_SRESET | Мягкий (частичный) сброс (ненадёжно) |1586| curses.KEY\_RESET | Сброс или жёсткий сброс (ненадёжно) |1587| curses.KEY\_PRINT | Печать |1588| curses.KEY\_LL | Домой вниз или нижняя строка (левый нижний) |1589| curses.KEY\_A1 | Верхний левый угол клавиатуры |1590| curses.KEY\_A3 | Верхний правый угол клавиатуры |1591| curses.KEY\_B2 | Центр клавиатуры |1592| curses.KEY\_C1 | Нижний левый угол клавиатуры |1593| curses.KEY\_C3 | Нижний правый угол клавиатуры |1594| curses.KEY\_BTAB | Обратная табуляция |1595| curses.KEY\_BEG | Начало |1596| curses.KEY\_CANCEL | Отмена |1597| curses.KEY\_CLOSE | Закрыть |1598| curses.KEY\_COMMAND | Команда |1599| curses.KEY\_COPY | Копировать |1600| curses.KEY\_CREATE | Создать |1601| curses.KEY\_END | Конец |1602| curses.KEY\_EXIT | Выход |1603| curses.KEY\_FIND | Найти |1604| curses.KEY\_HELP | Помощь |1605| curses.KEY\_MARK | Отметка |1606| curses.KEY\_MESSAGE | Сообщение |1607| curses.KEY\_MOVE | Переместить |1608| curses.KEY\_NEXT | Далее |1609| curses.KEY\_OPEN | Открыть |1610| curses.KEY\_OPTIONS | Параметры |1611| curses.KEY\_PREVIOUS | Назад (предыдущий) |1612| curses.KEY\_REDO | Повторить |1613| curses.KEY\_REFERENCE | Справка (ссылка) |1614| curses.KEY\_REFRESH | Обновить |1615| curses.KEY\_REPLACE | Заменить |1616| curses.KEY\_RESTART | Перезапустить |1617| curses.KEY\_RESUME | Возобновить |1618| curses.KEY\_SAVE | Сохранить |1619| curses.KEY\_SBEG | Shift+Начало (начало) |1620| curses.KEY\_SCANCEL | Shift+Отмена |1621| curses.KEY\_SCOMMAND | Shift+Команда |1622| curses.KEY\_SCOPY | Shift+Копировать |1623| curses.KEY\_SCREATE | Shift+Создать |1624| curses.KEY\_SDC | Shift+Удалить символ |1625| curses.KEY\_SDL | Shift+Удалить строку |1626| curses.KEY\_SELECT | Выбор |1627| curses.KEY\_SEND | Shift+Конец |1628| curses.KEY\_SEOL | Shift+Очистка строки |1629| curses.KEY\_SEXIT | Shift+Выход |1630| curses.KEY\_SFIND | Shift+Найти |1631| curses.KEY\_SHELP | Shift+Справка |1632| curses.KEY\_SHOME | Shift+Начало |1633| curses.KEY\_SIC | Shift+Ввод |1634| curses.KEY\_SLEFT | Shift+Стрелка влево |1635| curses.KEY\_SMESSAGE | Shift+Сообщение |1636| curses.KEY\_SMOVE | Shift+Перемещение |1637| curses.KEY\_SNEXT | Shift+Далее |1638| curses.KEY\_SOPTIONS | Shift+Параметры |1639| curses.KEY\_SPREVIOUS | Shift+Назад |1640| curses.KEY\_SPRINT | Shift+Печать |1641| curses.KEY\_SREDO | Shift+Повтор |1642| curses.KEY\_SREPLACE | Замена с Shift |1643| curses.KEY\_SRIGHT | Стрелка вправо с Shift |1644| curses.KEY\_SRSUME | Возобновление с Shift |1645| curses.KEY\_SSAVE | Сохранение с Shift |1646| curses.KEY\_SSUSPEND | Приостановка с Shift |1647| curses.KEY\_SUNDO | Отмена с Shift |1648| curses.KEY\_SUSPEND | Приостановить |1649| curses.KEY\_UNDO | Отменить |1650| curses.KEY\_MOUSE | Событие мыши |1651| curses.KEY\_RESIZE | Событие изменения размера терминала |1652| curses.KEY\_MAX | Максимальное значение клавиши |16531654На VT100 и их программных эмуляциях, таких как эмуляторы терминалов X, обычно доступны как минимум четыре функциональные клавиши ([`KEY_F1`](https://python-all.ru/3.16/library/curses.html#curses.KEY_Fn), `KEY_F2`, `KEY_F3`, `KEY_F4`), а стрелки отображаются на [`KEY_UP`](https://python-all.ru/3.16/library/curses.html#curses.KEY_UP), [`KEY_DOWN`](https://python-all.ru/3.16/library/curses.html#curses.KEY_DOWN), [`KEY_LEFT`](https://python-all.ru/3.16/library/curses.html#curses.KEY_LEFT) и [`KEY_RIGHT`](https://python-all.ru/3.16/library/curses.html#curses.KEY_RIGHT) очевидным образом. Если на вашей машине клавиатура PC, можно рассчитывать на стрелки и двенадцать функциональных клавиш (на старых клавиатурах PC может быть только десять); кроме того, стандартны следующие отображения цифровой клавиатуры:16551656| Клавиша | Константа |1657| --- | --- |1658| `Insert` | KEY\_IC |1659| `Delete` | KEY\_DC |1660| `Home` | KEY\_HOME |1661| `End` | KEY\_END |1662| `Page Up` | KEY\_PPAGE |1663| `Page Down` | KEY\_NPAGE |16641665### Альтернативный набор символов16661667В следующей таблице перечислены символы из альтернативного набора символов. Они унаследованы от терминала VT100 и обычно доступны в программных эмуляциях, таких как X терминалы. Если графический символ недоступен, curses использует грубое приближение в виде печатных символов ASCII.16681669> **Примечание**1670>1671> Они доступны только после вызова [`initscr()`](https://python-all.ru/3.16/library/curses.html#curses.initscr).16721673| Код ACS | Значение |1674| --- | --- |1675| curses.ACS\_BBSS | альтернативное имя для верхнего правого угла |1676| curses.ACS\_BLOCK | сплошной квадратный блок |1677| curses.ACS\_BOARD | доска из квадратов |1678| curses.ACS\_BSBS | альтернативное имя для горизонтальной линии |1679| curses.ACS\_BSSB | альтернативное имя для верхнего левого угла |1680| curses.ACS\_BSSS | альтернативное имя для верхнего тройника |1681| curses.ACS\_BTEE | нижний тройник |1682| curses.ACS\_BULLET | маркер |1683| curses.ACS\_CKBOARD | шахматная доска (точечный узор) |1684| curses.ACS\_DARROW | стрелка вниз |1685| curses.ACS\_DEGREE | символ градуса |1686| curses.ACS\_DIAMOND | ромб |1687| curses.ACS\_GEQUAL | больше или равно |1688| curses.ACS\_HLINE | горизонтальная линия |1689| curses.ACS\_LANTERN | символ фонаря |1690| curses.ACS\_LARROW | стрелка влево |1691| curses.ACS\_LEQUAL | меньше или равно |1692| curses.ACS\_LLCORNER | нижний левый угол |1693| curses.ACS\_LRCORNER | нижний правый угол |1694| curses.ACS\_LTEE | левый тройник |1695| curses.ACS\_NEQUAL | знак не равно |1696| curses.ACS\_PI | буква пи |1697| curses.ACS\_PLMINUS | плюс-минус |1698| curses.ACS\_PLUS | большой плюс |1699| curses.ACS\_RARROW | стрелка вправо |1700| curses.ACS\_RTEE | правый тройник |1701| curses.ACS\_S1 | линия развертки 1 |1702| curses.ACS\_S3 | линия развертки 3 |1703| curses.ACS\_S7 | линия развертки 7 |1704| curses.ACS\_S9 | линия развертки 9 |1705| curses.ACS\_SBBS | другое название нижнего правого угла |1706| curses.ACS\_SBSB | другое название вертикальной линии |1707| curses.ACS\_SBSS | альтернативное название правого тройника |1708| curses.ACS\_SSBB | альтернативное название нижнего левого угла |1709| curses.ACS\_SSBS | альтернативное название нижнего тройника |1710| curses.ACS\_SSSB | альтернативное название левого тройника |1711| curses.ACS\_SSSS | альтернативное название перекрестия или большого плюса |1712| curses.ACS\_STERLING | фунт стерлингов |1713| curses.ACS\_TTEE | верхний тройник |1714| curses.ACS\_UARROW | стрелка вверх |1715| curses.ACS\_ULCORNER | верхний левый угол |1716| curses.ACS\_URCORNER | верхний правый угол |1717| curses.ACS\_VLINE | вертикальная линия |17181719### Кнопки мыши17201721В следующей таблице перечислены константы кнопок мыши, используемые [`getmouse()`](https://python-all.ru/3.16/library/curses.html#curses.getmouse):17221723| Константа кнопки мыши | Значение |1724| --- | --- |1725| curses.BUTTONn\_PRESSED | Кнопка мыши *n* нажата |1726| curses.BUTTONn\_RELEASED | Кнопка мыши *n* отпущена |1727| curses.BUTTONn\_CLICKED | Кнопка мыши *n* щелкнута |1728| curses.BUTTONn\_DOUBLE\_CLICKED | Кнопка мыши *n* дважды щелкнута |1729| curses.BUTTONn\_TRIPLE\_CLICKED | Тройной клик кнопки мыши *n* |1730| curses.BUTTON\_SHIFT | Shift был нажат при изменении состояния кнопки |1731| curses.BUTTON\_CTRL | Control был нажат при изменении состояния кнопки |1732| curses.BUTTON\_ALT | Alt был нажат при изменении состояния кнопки |17331734Изменено в версии 3.10: Константы `BUTTON5_*` теперь доступны, если они предоставляются базовой библиотекой curses.17351736### Цвета17371738В следующей таблице перечислены предопределённые цвета:17391740| Константа | Цвет |1741| --- | --- |1742| curses.COLOR\_BLACK | Чёрный |1743| curses.COLOR\_BLUE | Синий |1744| curses.COLOR\_CYAN | Голубой (светлый сине-зелёный) |1745| curses.COLOR\_GREEN | Зелёный |1746| curses.COLOR\_MAGENTA | Пурпурный (красновато-фиолетовый) |1747| curses.COLOR\_RED | Красный |1748| curses.COLOR\_WHITE | Белый |1749| curses.COLOR\_YELLOW | Жёлтый |17501751# `curses.textpad` – виджет ввода текста для программ curses17521753Модуль `curses.textpad` предоставляет класс [`Textbox`](https://python-all.ru/3.16/library/curses.html#curses.textpad.Textbox), который управляет простым редактированием текста в окне curses, поддерживая набор сочетаний клавиш, напоминающих Emacs (а также Netscape Navigator, BBedit 6.x, FrameMaker и многих других программ). Модуль также предоставляет функцию рисования прямоугольников, полезную для создания рамок текстовых полей или других целей.17541755Модуль `curses.textpad` определяет следующую функцию:17561757#### `curses.textpad.rectangle(win, uly, ulx, lry, lrx)`17581759Рисует прямоугольник. Первый аргумент должен быть объектом окна; остальные аргументы – координаты относительно этого окна. Второй и третий аргументы – координаты y и x верхнего левого угла рисуемого прямоугольника; четвёртый и пятый аргументы – координаты y и x нижнего правого угла. Прямоугольник будет нарисован с использованием символов псевдографики VT100/IBM PC на терминалах, которые это поддерживают (включая xterm и большинство других программных эмуляторов терминала). В противном случае он будет нарисован с помощью символов ASCII: дефисов, вертикальных черт и знаков плюс.17601761## Объекты Textbox17621763Объект [`Textbox`](https://python-all.ru/3.16/library/curses.html#curses.textpad.Textbox) можно создать следующим образом:17641765#### `class curses.textpad.Textbox(win, insert_mode=False)`17661767Возвращает объект текстового поля. Аргумент *win* должен быть объектом [window](https://python-all.ru/3.16/library/curses.html#curses-window-objects) curses, в котором будет размещено текстовое поле. Если *insert\_mode* истинно, текстовое поле вставляет вводимые символы, сдвигая существующий текст вправо, а не перезаписывая его. Редакционный курсор текстового поля изначально находится в верхнем левом углу содержащего окна, с координатами `(0, 0)`. Флаг [`stripspaces`](https://python-all.ru/3.16/library/curses.html#curses.textpad.Textbox.stripspaces) экземпляра изначально включён.17681769Изменено в версии 3.16.0a0 (не выпущено): Теперь поддерживается ввод и чтение полного диапазона Unicode, включая комбинирующие символы, когда curses собран с поддержкой широких символов.17701771Объекты `Textbox` имеют следующие методы:17721773#### `edit(validate=None)`17741775Это основная точка входа, используемая по умолчанию. Метод принимает нажатия клавиш редактирования, пока не будет введена одна из завершающих клавиш. Если передан *validate*, он должен быть функцией. Она будет вызываться для каждого нажатия клавиши с параметром, представляющим нажатую клавишу; диспетчеризация команды выполняется по результату. Если возвращается ложное значение, нажатие игнорируется. Этот метод возвращает содержимое окна в виде строки; включение пробелов в окне определяется атрибутом [`stripspaces`](https://python-all.ru/3.16/library/curses.html#curses.textpad.Textbox.stripspaces).17761777Изменено в версии 3.16.0a0 (не выпущено): *validate* теперь вызывается с не-ASCII символом в виде строки; остальные нажатия клавиш по-прежнему передаются как целое число.17781779#### `do_command(ch)`17801781Обрабатывает одно нажатие командной клавиши. Возвращает `1` для продолжения редактирования или `0`, если была обработана завершающая клавиша. Ниже перечислены поддерживаемые специальные клавиши:17821783| Клавиша | Действие |1784| --- | --- |1785| `Control`-`A` | Переход к левому краю окна. |1786| `Control`-`B` | Курсор влево, с переносом на предыдущую строку (если применимо). |1787| `Control`-`D` | Удалить символ под курсором. |1788| `Control`-`E` | Перейти к правому краю (stripspaces off) или в конец строки (stripspaces on). |1789| `Control`-`F` | Курсор вправо, с переносом на следующую строку (если применимо). |1790| `Control`-`G` | Завершить, вернув содержимое окна. |1791| `Control`-`H` | Удалить предыдущий символ. |1792| `Control`-`J` | Завершить, если окно состоит из одной строки, в противном случае перейти к началу следующей строки. |1793| `Control`-`K` | Если строка пуста, удалить её, в противном случае очистить до конца строки. |1794| `Control`-`L` | Обновить экран. |1795| `Control`-`N` | Курсор вниз; переместиться на одну строку вниз. |1796| `Control`-`O` | Вставить пустую строку в позиции курсора. |1797| `Control`-`P` | Курсор вверх; переместиться на одну строку вверх. |17981799Операции перемещения не выполняются, если курсор находится у края, где движение невозможно. Там, где это возможно, поддерживаются следующие синонимы:18001801| Константа | Клавиша |1802| --- | --- |1803| [`KEY_LEFT`](https://python-all.ru/3.16/library/curses.html#curses.KEY_LEFT) | `Control`-`B` |1804| [`KEY_RIGHT`](https://python-all.ru/3.16/library/curses.html#curses.KEY_RIGHT) | `Control`-`F` |1805| [`KEY_UP`](https://python-all.ru/3.16/library/curses.html#curses.KEY_UP) | `Control`-`P` |1806| [`KEY_DOWN`](https://python-all.ru/3.16/library/curses.html#curses.KEY_DOWN) | `Control`-`N` |1807| [`KEY_BACKSPACE`](https://python-all.ru/3.16/library/curses.html#curses.KEY_BACKSPACE) | `Control`-`h` |18081809Все остальные нажатия клавиш обрабатываются как команда вставить указанный символ и переместиться вправо (с переносом строки).18101811#### `gather()`18121813Возвращает содержимое окна в виде строки; включение пробелов в окне зависит от элемента [`stripspaces`](https://python-all.ru/3.16/library/curses.html#curses.textpad.Textbox.stripspaces).18141815#### `stripspaces`18161817Этот атрибут является флагом, управляющим интерпретацией пробелов в окне. Когда он включён, конечные пробелы в каждой строке игнорируются; любое перемещение курсора, которое привело бы к его установке на конечный пробел, вместо этого перемещает курсор в конец строки, а конечные пробелы удаляются при сборе содержимого окна.1818