# 16.13. `curses.panel` — curses 的 panel 栈扩展

面板是具有添加深度功能的窗口，因此它们可以从上至下堆叠为栈，只有显示每个窗口的可见部分会显示出来。 面板可以在栈中被添加、上移或下移，也可以被移除。

## 16.13.1. 函数

`curses.panel` 模块定义了以下函数:

`curses.panel.``bottom_panel`()

  返回面板栈中的底部面板。

`curses.panel.``new_panel`(win)

  返回一个面板对象，将其与给定的窗口 win 相关联。 请注意你必须显式地保持所返回的面板对象。 如果你不这样做，面板对象会被垃圾回收并从面板栈中被移除。

`curses.panel.``top_panel`()

  返回面板栈中的顶部面板。

`curses.panel.``update_panels`()

  在面板栈发生改变后更新虚拟屏幕。 这不会调用 `curses.doupdate()`，因此你不必自己执行此操作。

## 16.13.2. Panel 对象

Panel 对象，如上面 `new_panel()` 所返回的对象，是带有栈顺序的多个窗口。 总是会有一个窗口与确定内容的面板相关联，面板方法会负责窗口在面板栈中的深度。

Panel 对象具有以下方法:

`Panel.``above`()

  返回当前面板之上的面板。

`Panel.``below`()

  返回当前面板之下的面板。

`Panel.``bottom`()

  将面板推至栈底部。

`Panel.``hidden`()

  如果面板被隐藏（不可见）则返回 `True`，否则返回 `False`。

`Panel.``hide`()

  隐藏面板。 这不会删除对象，它只是让窗口在屏幕上不可见。

`Panel.``move`(y, x)

  将面板移至屏幕坐标 `(y, x)`。

`Panel.``replace`(win)

  将与面板相关联的窗口改为窗口 win。

`Panel.``set_userptr`(obj)

  将面板的用户指向设为 obj。 这被用来将任意数据与面板相关联，数据可以是任何 Python 对象。

`Panel.``show`()

  显示面板（面板可能已被隐藏）。

`Panel.``top`()

  将面板推至栈顶部。

`Panel.``userptr`()

  返回面板的用户指针。 这可以是任何 Python 对象。

`Panel.``window`()

  返回与面板相关联的窗口对象。