"curses.panel" --- 针对 curses 的面板栈扩展
*******************************************

======================================================================

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


函数
====

"curses.panel" 模块定义了以下异常：

exception curses.panel.error

   当 curses panel 库函数返回错误时引发的异常。

"curses.panel" 模块定义了下列函数：

curses.panel.bottom_panel()

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

curses.panel.new_panel(win)

   返回一个面板对象，将其与给定的窗口 *win* 相关联，并将新面板置于面板
   栈的顶部。请注意，你需要显式保留对所返回面板对象的引用。如果不这样
   做，面板对象将被垃圾回收并从面板栈中移除。

curses.panel.top_panel()

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

curses.panel.update_panels()

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


Panel 对象
==========

class curses.panel.panel

   由上面的 "new_panel()" 所返回的 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()

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