Documentación offline Python 3.14

Curses C API

3.14 Ver versión oficial en línea Licencia PSF-2.0Descargado el 2026-08-02

Curses C API#

"curses" exposes a small C interface for extension modules. Consumers must include the header file "py_curses.h" (which is not included by default by "Python.h") and "import_curses()" must be invoked, usually as part of the module initialisation function, to populate "PyCurses_API".

Advertencia:

Neither the C API nor the pure Python "curses" module are compatible with subinterpreters.

import_curses()

Import the curses C API. The macro does not need a semi-colon to be called.

On success, populate the "PyCurses_API" pointer.

On failure, set "PyCurses_API" to NULL and set an exception. The caller must check if an error occurred via "PyErr_Occurred()":

  import_curses();  // semi-colon is optional but recommended
  if (PyErr_Occurred()) { /* cleanup */ }

void **PyCurses_API

Dynamically allocated object containing the curses C API. This variable is only available once "import_curses" succeeds.

"PyCurses_API[0]" corresponds to "PyCursesWindow_Type".

"PyCurses_API[1]", "PyCurses_API[2]", and "PyCurses_API[3]" are pointers to predicate functions of type "int (*)(void)".

When called, these predicates return whether "curses.setupterm()", "curses.initscr()", and "curses.start_color()" have been called respectively.

See also the convenience macros "PyCursesSetupTermCalled", "PyCursesInitialised", and "PyCursesInitialisedColor".

Nota:

 The number of entries in this structure is subject to changes.
 Consider using "PyCurses_API_pointers" to check if new fields are
 available or not.

PyCurses_API_pointers

The number of accessible fields ("4") in "PyCurses_API". This number is incremented whenever new fields are added.

PyTypeObject PyCursesWindow_Type

The heap type corresponding to "curses.window".

int PyCursesWindow_Check(PyObject *op)

Return true if op is a "curses.window" instance, false otherwise.

The following macros are convenience macros expanding into C statements. In particular, they can only be used as "macro;" or "macro", but not "macro()" or "macro();".

PyCursesSetupTermCalled

Macro checking if "curses.setupterm()" has been called.

The macro expansion is roughly equivalent to:

  {
      typedef int (*predicate_t)(void);
      predicate_t was_setupterm_called = (predicate_t)PyCurses_API[1];
      if (!was_setupterm_called()) {
          return NULL;
      }
  }

PyCursesInitialised

Macro checking if "curses.initscr()" has been called.

The macro expansion is roughly equivalent to:

  {
      typedef int (*predicate_t)(void);
      predicate_t was_initscr_called = (predicate_t)PyCurses_API[2];
      if (!was_initscr_called()) {
          return NULL;
      }
  }

PyCursesInitialisedColor

Macro checking if "curses.start_color()" has been called.

The macro expansion is roughly equivalent to:

  {
      typedef int (*predicate_t)(void);
      predicate_t was_start_color_called = (predicate_t)PyCurses_API[3];
      if (!was_start_color_called()) {
          return NULL;
      }
  }

Internal data#

The following objects are exposed by the C API but should be considered internal-only.

PyCurses_CAPSULE_NAME

Name of the curses capsule to pass to "PyCapsule_Import()".

Internal usage only. Use "import_curses" instead.