Curses C API

curses 為擴充模組公開了一個小型的 C 介面。使用者必須包含標頭檔py_curses.h(此檔案不會由Python.h 預設包含),並且必須觸發import_curses() 以填充 (populate)PyCurses_API,通常是作為模組初始化函式的一部分。

警告

Neither the C API nor the pure Pythoncurses module are compatiblewith subinterpreters.

import_curses()

引入 curses C API。呼叫此巨集不需要寫分號。

On success, populate thePyCurses_API pointer.

On failure, setPyCurses_API to NULL and set an exception.The caller must check if an error occurred viaPyErr_Occurred():

import_curses();// 建議要寫分號但非必要if(PyErr_Occurred()){/* 清理 */}
void**PyCurses_API

Dynamically allocated object containing the curses C API.This variable is only available onceimport_curses succeeds.

PyCurses_API[0] corresponds toPyCursesWindow_Type.

PyCurses_API[1]PyCurses_API[2]PyCurses_API[3] 是指向 型別為int(*)(void) 的謂詞函式 (predicate functions) 的指標。

When called, these predicates return whethercurses.setupterm(),curses.initscr(), andcurses.start_color() have been calledrespectively.

See also the convenience macrosPyCursesSetupTermCalled,PyCursesInitialised, andPyCursesInitialisedColor.

備註

The number of entries in this structure is subject to changes.Consider usingPyCurses_API_pointers to check ifnew fields are available or not.

PyCurses_API_pointers

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

PyTypeObjectPyCursesWindow_Type

Theheap type corresponding tocurses.window.

intPyCursesWindow_Check(PyObject*op)

如果opcurses.window 實例則回傳 true,否則回傳 false。

The following macros are convenience macros expanding into C statements.In particular, they can only be used asmacro; ormacro, but notmacro() ormacro();.

PyCursesSetupTermCalled

如果已呼叫curses.setupterm(),則為巨集檢查。

巨集展開大致相當於:

{typedefint(*predicate_t)(void);predicate_twas_setupterm_called=(predicate_t)PyCurses_API[1];if(!was_setupterm_called()){returnNULL;}}
PyCursesInitialised

如果已呼叫curses.initscr(),則為巨集檢查。

巨集展開大致相當於:

{typedefint(*predicate_t)(void);predicate_twas_initscr_called=(predicate_t)PyCurses_API[2];if(!was_initscr_called()){returnNULL;}}
PyCursesInitialisedColor

如果已呼叫curses.start_color(),則為巨集檢查。

巨集展開大致相當於:

{typedefint(*predicate_t)(void);predicate_twas_start_color_called=(predicate_t)PyCurses_API[3];if(!was_start_color_called()){returnNULL;}}

內部資料

以下物件由 C API 所公開,但應視為僅供內部使用。

PyCurses_CAPSULE_NAME

Name of the curses capsule to pass toPyCapsule_Import().

僅供內部使用。請改用import_curses