Curses环境的启动与退出

在任何应用使用Curses环境之前,都必须初始化Curses。初始化Curses可以使用.initscr()函数,之后可以进行一系列的初始化,初始化的示例如下。

import curses

stdscr = curses.initscr()
curses.start_color()
curses.init_pair(1, curses.COLOR_GREEN, curses.COLOR_BLACK)
curses.init_pair(2, curses.COLOR_RED, curses.COLOR_BLACK)
curses.noecho()
curses.cbreak()

在示例中,curses.initscr()负责初始化Curses环境,并返回一个标准窗口,即示例中的stdscr。这个标准窗口直接对应目前的屏幕。

curses.start_color()用于初始化颜色环境,如果应用中需要用到颜色,就必须使用这一函数初始化颜色环境。.init_pair()函数用于定义颜色组,这将在后面的内容中介绍。

.noecho().cbreak()比较常见,并且在应用中发挥用处较大。其中.noecho()用于关闭键盘输入显示,即关闭输入回显,此时敲击键盘输入的内容将不在屏幕上显示;这在组织屏幕内容和实现快捷键输入时十分有用。

.cbreak()用于进入CBreak模式,在该模式下,应用可以立刻响应键盘的输入,而不是在键盘输入完毕按下回车键后才开始响应。与此模式相反的是缓冲模式,可参考一般应用从终端读取数据的形式。

在退出Curses时,必须要关闭Curses模式,才能让终端回到正常可用的状态下,根据前面的示例,以下示例是其对应的关闭示例。

curses.nocbreak()
curses.echo()
curses.endwin()

示例中的状态设置顺序与初始化时相反,并且最后使用.endwin()函数关闭Curses环境。关闭Curses环境非常重要,这关系着终端在应用运行完毕后能不能回到正常的工作状态。