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环境非常重要,这关系着终端在应用运行完毕后能不能回到正常的工作状态。