curses ---字符单元显示的终端处理


这个 curses 模块提供了到Curses库的接口,Curses库是便携式高级终端处理的事实标准。

Curses在Unix环境中使用最广泛,但Windows、DOS和其他系统也有可用的版本。此扩展模块旨在匹配ncurses的API、Linux上托管的开源Curses库和Unix的BSD变体。

注解

每当文件提到 character 它可以指定为整数、一个字符Unicode字符串或一个字节字节字符串。

每当文件提到 字符串 它可以指定为Unicode字符串或字节字符串。

注解

自5.4版以来,ncurses库决定如何使用 nl_langinfo 功能。这意味着你必须调用 locale.setlocale() 在应用程序中,使用系统的可用编码之一对Unicode字符串进行编码。此示例使用系统的默认编码:

import locale
locale.setlocale(locale.LC_ALL, '')
code = locale.getpreferredencoding()

然后使用 code 作为的编码 str.encode() 调用。

参见

模块 curses.ascii

用于使用ASCII字符的实用程序,与您的区域设置无关。

模块 curses.panel

向curses窗口添加深度的面板堆栈扩展。

模块 curses.textpad

支持curses的可编辑文本小部件 Emacs -像绑定。

curses用python编程

Andrew Kuchling和Eric Raymond提供的关于在Python中使用curses的教程材料。

这个 Tools/demo/ python源发行版中的目录包含一些使用此模块提供的curses绑定的示例程序。

功能

模块 curses 定义以下异常:

exception curses.error

当Curses库函数返回错误时引发异常。

注解

无论何时 xy 函数或方法的参数是可选的,它们默认为当前光标位置。无论何时 attr 是可选的,默认为 A_NORMAL .

模块 curses 定义以下函数:

curses.baudrate()

返回终端的输出速度(位/秒)。在软件终端模拟器上,它将具有固定的高值。由于历史原因而包括在内;在以前,它被用来为时间延迟编写输出循环,有时还根据线速度更改接口。

curses.beep()

发出短暂的注意声。

curses.can_change_color()

返回 TrueFalse ,取决于程序员是否可以更改终端显示的颜色。

curses.cbreak()

进入cbreak模式。在cbreak模式(有时称为“稀有”模式)下,正常的tty行缓冲被关闭,可以逐个读取字符。但是,与原始模式不同,特殊字符(中断、退出、挂起和流控制)保留它们对TTY驱动程序和调用程序的影响。先调用 raw() 然后 cbreak() 使终端处于CBreak模式。

curses.color_content(color_number)

返回颜色中红、绿、蓝(RGB)分量的强度 color_number ,它必须介于 0COLORS - 1 。返回一个三元组,包含给定颜色的R、G、B值,它将介于 0 (无组件)和 1000 (组件的最大数量)。

curses.color_pair(pair_number)

返回用于以指定颜色对显示文本的属性值。仅支持前256个颜色对。此属性值可以与 A_STANDOUTA_REVERSE ,和另一个 A_* 属性。 pair_number() 是此函数的对应函数。

curses.curs_set(visibility)

设置光标状态。 能见度 可以设置为 012 ,表示不可见、正常或非常可见。如果终端支持请求的可见性,则返回上一个光标状态;否则引发异常。在许多终端上,“可见”模式是下划线光标,“非常可见”模式是块光标。

curses.def_prog_mode()

将当前终端模式保存为“程序”模式,即运行程序使用curses时的模式。(它的对应项是“shell”模式,当程序不在curses中时。)随后调用 reset_prog_mode() 将恢复此模式。

curses.def_shell_mode()

将当前终端模式保存为“shell”模式,即运行程序不使用curses时的模式。(当程序使用Curses功能时,其对应的模式是“程序”模式。)随后调用 reset_shell_mode() 将恢复此模式。

curses.delay_output(ms)

插入一个 ms 输出暂停毫秒。

curses.doupdate()

更新物理屏幕。Curses库保留两个数据结构,一个表示当前物理屏幕内容,一个表示所需下一个状态的虚拟屏幕。这个 doupdate() 地面更新物理屏幕以匹配虚拟屏幕。

虚拟屏幕可以通过 noutrefresh() 在写入操作后调用,例如 addstr() 已在窗口上执行。正常人 refresh() 调用是简单的 noutrefresh() 然后 doupdate() ;如果必须更新多个窗口,可以通过发出 noutrefresh() 调用所有窗口,然后调用一个 doupdate() .

curses.echo()

进入回声模式。在echo模式下,每个字符输入在输入时都会回显到屏幕上。

curses.endwin()

取消对库的初始化,并将终端恢复到正常状态。

curses.erasechar()

以单字节字节对象的形式返回用户当前的擦除字符。在Unix操作系统下,这是curses程序控制tty的一个属性,而不是由curses库本身设置的。

curses.filter()

这个 filter() 如果使用例程,则必须在 initscr() 被调用。结果是,在这些通话中, LINES 设置为 1 ;能力 clearcupcudcud1cuu1cuuvpa 残疾人;以及 home 字符串被设置为 cr .其效果是光标仅限于当前行,屏幕更新也是如此。这可用于在不接触屏幕其余部分的情况下启用字符一次行编辑。

curses.flash()

闪烁屏幕。也就是说,将其更改为反转视频,然后在短时间内将其重新更改。有些人类似于“可视铃”,而不是 beep() .

curses.flushinp()

刷新所有输入缓冲区。这将丢弃用户键入但程序尚未处理的任何提前输入。

curses.getmouse()

之后 getch() 退货 KEY_MOUSE 若要发出鼠标事件信号,应调用此方法来检索排队的鼠标事件,表示为5元组 (id, x, y, z, bstate)id 是用于区分多个设备的ID值,并且 xyz 是事件的坐标。( z 当前未使用。) bstate 是一个整数值,其位将被设置以指示事件类型,并且将是以下一个或多个常量的按位OR,其中 n 是从1到5的按键数字: BUTTONn_PRESSEDBUTTONn_RELEASEDBUTTONn_CLICKEDBUTTONn_DOUBLE_CLICKEDBUTTONn_TRIPLE_CLICKEDBUTTON_SHIFTBUTTON_CTRLBUTTON_ALT

在 3.10 版更改: 这个 BUTTON5_* 如果常量是由底层的curses库提供的,那么它们现在是公开的。

curses.getsyx()

以元组形式返回虚拟屏幕光标的当前坐标 (y, x) . 如果 leaveok 目前 True ,然后返回 (-1, -1) .

curses.getwin(file)

读取以前存储在文件中的与窗口相关的数据 putwin() 调用。然后,该例程使用该数据创建并初始化一个新窗口,返回新窗口对象。

curses.has_colors()

返回 True 如果终端可以显示颜色,则返回 False .

curses.has_extended_color_support()

返回 True 如果模块支持扩展颜色;否则,返回 False . 扩展颜色支持允许支持超过16种颜色(例如xterm-256color)的终端使用256种以上的颜色对。

扩展颜色支持需要ncurses 6.1或更高版本。

3.10 新版功能.

curses.has_ic()

返回 True 如果终端具有插入和删除字符功能。由于所有现代软件终端仿真器都具有这样的功能,因此仅出于历史原因才包含此功能。

curses.has_il()

返回 True 如果终端具有插入和删除行功能,或者可以使用滚动区域来模拟它们。由于所有现代软件终端仿真器都具有这样的功能,因此仅出于历史原因才包含此功能。

curses.has_key(ch)

获取键值 ch 并返回 True 如果当前终端类型识别具有该值的键。

curses.halfdelay(tenths)

用于半延迟模式,类似于cbreak模式,因为用户键入的字符可立即用于程序。但是,在封锁后 十分之一 十分之一秒,如果未键入任何内容,则引发异常。价值 十分之一 必须是介于 1255 . 使用 nocbreak() 离开半延迟模式。

curses.init_color(color_number, r, g, b)

更改颜色的定义,采用要更改的颜色编号,后跟三个RGB值(表示红色、绿色和蓝色分量的量)。的价值 color_number 必须介于 0COLORS - 1 。每一个 rgb ,必须是介于 01000 。什么时候 init_color() 则屏幕上该颜色的所有匹配项都会立即更改为新定义。此功能在大多数终端上是无操作的;只有在以下情况下才会激活 can_change_color() 退货 True

curses.init_pair(pair_number, fg, bg)

更改颜色对的定义。它有三个参数:要更改的颜色对的编号、前景颜色编号和背景颜色编号。的价值 pair_number 必须介于 1COLOR_PAIRS - 1 ( 0 颜色对在黑色上接线为白色,并且不能更改)。的价值 fgbg 参数必须介于 0COLORS - 1 ,或者,在调用 use_default_colors()-1 。如果颜色对先前已初始化,则屏幕将刷新,并且该颜色对的所有匹配项都将更改为新定义。

curses.initscr()

初始化库。返回A window 表示整个屏幕的对象。

注解

如果打开终端时出错,底层的Curses库可能会导致解释器退出。

curses.is_term_resized(nlines, ncols)

返回 True 如果 resize_term() 会修改窗口结构, False 否则。

curses.isendwin()

返回 True 如果 endwin() 被称为(即curses类库已被神化)。

curses.keyname(k)

返回编号的密钥的名称 k 作为字节对象。生成可打印ASCII字符的密钥的名称是密钥的字符。控制键组合的名称是由插入符号组成的双字节字节对象 (b'^' )然后是相应的可打印的ASCII字符。alt-key组合的名称(128-255)是一个由前缀组成的bytes对象。 b'M-' 后跟相应的ASCII字符的名称。

curses.killchar()

以单字节字节对象的形式返回用户的当前行终止字符。在Unix操作系统下,这是curses程序控制tty的一个属性,而不是由curses库本身设置的。

curses.longname()

返回一个bytes对象,该对象包含描述当前终端的terminfo long name字段。详细描述的最大长度为128个字符。只有在调用 initscr() .

curses.meta(flag)

如果 flagTrue ,允许输入8位字符。如果 flagFalse ,仅允许7位字符。

curses.mouseinterval(interval)

设置新闻和发布事件之间的最长时间(毫秒),以便将它们识别为单击,并返回上一个间隔值。默认值为200毫秒或五分之一秒。

curses.mousemask(mousemask)

设置要报告的鼠标事件,并返回元组 (availmask, oldmask) . 有效掩码 指示可以报告指定的鼠标事件中的哪一个;一旦完全失败,它将返回 0 . 旧掩模 是给定窗口的鼠标事件掩码的前一个值。如果从未调用此函数,则不会报告任何鼠标事件。

curses.napms(ms)

睡觉 ms 毫秒。

curses.newpad(nlines, ncols)

创建并返回一个指向具有给定行数和列数的新PAD数据结构的指针。返回一个pad作为窗口对象。

pad就像一个窗口,只是它不受屏幕大小的限制,也不一定与屏幕的特定部分相关联。当需要大窗口时,可以使用垫子,一次只有一部分窗口在屏幕上。不会自动刷新焊盘(如从滚动或回音输入)。这个 refresh()noutrefresh() PAD的方法需要6个参数来指定要显示的PAD部分和屏幕上用于显示的位置。这些参数是 普米罗普米科尔斯米罗斯米科尔斯马克罗斯马科尔p 参数是指要显示的焊盘区域的左上角,以及 s 参数定义屏幕上要显示填充区域的剪切框。

curses.newwin(nlines, ncols)
curses.newwin(nlines, ncols, begin_y, begin_x)

返回一个新的 window ,其左上角位于 (begin_y, begin_x) ,其高度/宽度为 非线性 / 恩科斯 .

默认情况下,窗口将从指定位置延伸到屏幕的右下角。

curses.nl()

进入换行模式。此模式在输入时将返回键转换为换行符,并在输出时将换行符转换为返回和换行符。换行模式最初打开。

curses.nocbreak()

离开cbreak模式。恢复正常的“煮熟”模式和线路缓冲。

curses.noecho()

离开回声模式。输入字符的回显被关闭。

curses.nonl()

保持换行模式。禁用在输入时将返回转换为换行,并禁用将换行转换为换行/输出时返回的低级转换(但这不会更改 addch('\n') ,它总是在虚拟屏幕上执行相当于返回和换行的操作)。关闭翻译后,curses有时会使垂直运动加快一点;此外,它还可以检测输入时的返回键。

curses.noqiflush()

noqiflush() 使用常规程序,正常刷新与 INTRQUITSUSP 字符将无法完成。你可能想调用 noqiflush() 在信号处理程序中,如果希望在处理程序退出后继续输出,就像没有发生中断一样。

curses.noraw()

离开原始模式。恢复正常的“煮熟”模式和线路缓冲。

curses.pair_content(pair_number)

返回元组 (fg, bg) 包含请求的颜色对的颜色。的价值 pair_number 必须介于 0COLOR_PAIRS - 1

curses.pair_number(attr)

返回由属性值设置的颜色对的数目 attr . color_pair() 是这个功能的对应物。

curses.putp(str)

相当于 tputs(str, 1, putchar) ;为当前终端发出指定terminfo功能的值。注意,输出 putp() 总是转到标准输出。

curses.qiflush([flag])

如果 flagFalse ,效果与调用相同 noqiflush() .如果 flagTrue 或者不提供参数,则在读取这些控制字符时将刷新队列。

curses.raw()

进入原始模式。在原始模式下,正常的线路缓冲和中断、退出、暂停和流控制键的处理被关闭;字符被一个接一个地表示为对输入函数的curses。

curses.reset_prog_mode()

将终端恢复到“程序”模式,如之前保存的 def_prog_mode() .

curses.reset_shell_mode()

将终端恢复到“shell”模式,如之前保存的 def_shell_mode() .

curses.resetty()

将终端模式的状态恢复到上次调用时的状态 savetty() .

curses.resize_term(nlines, ncols)

后端功能由使用 resizeterm() ,执行大部分工作;调整窗口大小时, resize_term() 空白填充扩展的区域。调用应用程序应该用适当的数据填充这些区域。这个 resize_term() 函数尝试调整所有窗口的大小。但是,由于pad的调用约定,如果不与应用程序进行额外的交互,就无法调整这些pad的大小。

curses.resizeterm(nlines, ncols)

将标准窗口和当前窗口调整为指定的尺寸,并调整记录窗口尺寸的Curses库(尤其是SigWinch处理程序)使用的其他簿记数据。

curses.savetty()

将终端模式的当前状态保存在缓冲区中,可由 resetty() .

curses.get_escdelay()

检索由设置的值 set_escdelay() .

3.9 新版功能.

curses.set_escdelay(ms)

设置读取转义字符后等待的毫秒数,以区分键盘上输入的单个转义字符与光标和功能键发送的转义序列。

3.9 新版功能.

curses.get_tabsize()

检索由设置的值 set_tabsize() .

3.9 新版功能.

curses.set_tabsize(size)

设置光标库在将制表符添加到窗口时将制表符转换为空格时使用的列数。

3.9 新版功能.

curses.setsyx(y, x)

将虚拟屏幕光标设置为 yx .如果 yx 都是 -1 然后 leaveok 被设定 True .

curses.setupterm(term=None, fd=- 1)

初始化终端。 term 是提供终端名称的字符串,或 None 如果省略或 None ,的值 TERM 将使用环境变量。 fd 是任何初始化序列将发送到的文件描述符;如果未提供或 -1 ,的文件描述符 sys.stdout 将被使用。

curses.start_color()

如果程序员想使用颜色,必须在调用任何其他颜色操作例程之前调用。很好的做法是在 initscr() .

start_color() 初始化中的八种基本颜色(黑色、红色、绿色、黄色、蓝色、洋红、青色和白色)和两个全局变量 curses 模块, COLORSCOLOR_PAIRS ,包含终端可以支持的最大颜色数和颜色对。它还将终端上的颜色恢复为终端刚打开时的值。

curses.termattrs()

返回终端支持的所有视频属性的逻辑或。当Curses程序需要完全控制屏幕外观时,此信息非常有用。

curses.termname()

返回环境变量的值 TERM ,作为字节对象,截断为14个字符。

curses.tigetflag(capname)

返回与terminfo功能名称对应的布尔功能值 卡佩克 作为整数。返回值 -1 如果 卡佩克 不是布尔能力,或 0 如果它被取消或不在终端描述中。

curses.tigetnum(capname)

返回与terminfo能力名称对应的数值能力值 卡佩克 作为整数。返回值 -2 如果 卡佩克 不是数字能力,或 -1 如果它被取消或不在终端描述中。

curses.tigetstr(capname)

返回与terminfo功能名称对应的字符串功能的值 卡佩克 作为字节对象。返回 None 如果 卡佩克 不是terminfo“字符串功能”,或者在终端描述中取消或不存在。

curses.tparm(str[, ...])

实例化bytes对象 str 使用提供的参数,其中 str 应该是从terminfo数据库获取的参数化字符串。例如。 tparm(tigetstr("cup"), 5, 3) 可能导致 b'\033[6;4H' ,具体结果取决于终端类型。

curses.typeahead(fd)

指定文件描述符 fd 用于打印前检查。如果 fd-1 ,则不进行预输入检查。

Curses库通过在更新屏幕时定期查找提前排字来进行“换行优化”。如果找到输入,并且它来自tty,则当前更新将被推迟,直到再次调用refresh或doupdate,从而可以更快地响应预先输入的命令。此函数允许指定一个不同的文件描述符来进行预先排版检查。

curses.unctrl(ch)

返回字节对象,该对象是字符的可打印表示形式 ch . 控制字符表示为插入符号,后跟字符,例如 b'^C' . 打印字符保持原样。

curses.ungetch(ch)

ch 所以下一个 getch() 将返回它。

注解

只有一个 ch 之前可以推 getch() 被称为。

curses.update_lines_cols()

更新 LINESCOLS .用于检测手动调整屏幕大小。

3.5 新版功能.

curses.unget_wch(ch)

ch 所以下一个 get_wch() 将返回它。

注解

只有一个 ch 之前可以推 get_wch() 被称为。

3.3 新版功能.

curses.ungetmouse(id, x, y, z, bstate)

推A KEY_MOUSE 事件,将给定的状态数据与其关联。

curses.use_env(flag)

如果使用此函数,则应在 initscr() 或者称为新术语。什么时候? flagFalse ,将使用terminfo数据库中指定的行和列的值,即使环境变量 LINESCOLUMNS (默认使用)被设置,或者如果curses正在窗口中运行(在这种情况下,默认行为将使用窗口大小,如果 LINESCOLUMNS 未设置)。

curses.use_default_colors()

允许在支持此功能的终端上使用颜色的默认值。使用它可以支持应用程序中的透明度。将默认颜色指定给颜色编号 -1 . 调用此函数后, init_pair(x, curses.COLOR_RED, -1) 初始化,例如,颜色对 x 默认背景上的红色前景色。

curses.wrapper(func, /, *args, **kwargs)

初始化curses并调用另一个可调用对象, func 这应该是您使用应用程序的其他curses。如果应用程序引发异常,此函数将在重新引发异常并生成回溯之前将终端恢复到正常状态。可调用对象 func 然后将主窗口“stdscr”作为其第一个参数传递,后跟传递给 wrapper() . 调用之前 funcwrapper() 打开cbreak模式,关闭echo,启用终端键盘,如果终端支持颜色,则初始化颜色。在退出时(无论正常还是异常),它会恢复烹饪模式,打开回声,并禁用终端键盘。

窗口对象

窗口对象,由返回 initscr()newwin() 上面有以下方法和属性:

window.addch(ch[, attr])
window.addch(y, x, ch[, attr])

涂料特性 ch(y, x) 带属性 attr ,覆盖先前在该位置绘制的任何字符。默认情况下,角色位置和属性是窗口对象的当前设置。

注解

在窗口、子窗口或PAD外写入将引发 curses.error . 试图写入窗口、子窗口或便笺簿的右下角将导致打印字符后引发异常。

window.addnstr(str, n[, attr])
window.addnstr(y, x, str, n[, attr])

油漆最多 n 字符串的字符 str(y, x) 带属性 attr ,覆盖以前显示的任何内容。

window.addstr(str[, attr])
window.addstr(y, x, str[, attr])

绘制字符串 str(y, x) 带属性 attr ,覆盖以前显示的任何内容。

注解

  • 在窗口、子窗口或便笺簿外书写会升高 curses.error . 试图写入窗口、子窗口或便笺簿的右下角将导致打印字符串后引发异常。

  • A bug in ncurses 在调整窗口大小时,此python模块的后端可能会导致segfaults。这是在NCURSES-6.1-20190511中修复的。如果你陷入了早先的困境,如果你不打电话,你可以避免触发这个。 addstr() 用一个 str 嵌入了换行符。相反,打电话 addstr() 每行单独填写。

window.attroff(attr)

删除属性 attr 从应用于当前窗口所有写入操作的“后台”设置。

window.attron(attr)

添加属性 attr 从应用于当前窗口所有写入操作的“后台”设置。

window.attrset(attr)

将“背景”属性集设置为 attr . 这套最初是 0 (无属性)。

window.bkgd(ch[, attr])

将窗口的background属性设置为字符 ch ,具有属性 attr . 然后将更改应用于该窗口中的每个字符位置:

  • 窗口中每个字符的属性都将更改为新的背景属性。

  • 无论前一个背景字符出现在何处,它都将更改为新的背景字符。

window.bkgdset(ch[, attr])

设置窗口的背景。窗口的背景由字符和任何属性组合组成。背景的属性部分与写入窗口的所有非空白字符组合(或编辑)。背景的字符和属性部分都与空白字符相结合。背景将成为字符的一个属性,并随字符一起在任何滚动和插入/删除行/字符操作中移动。

window.border([ls[, rs[, ts[, bs[, tl[, tr[, bl[, br]]]]]]]])

在窗口边缘周围画一个边框。每个参数指定用于边框特定部分的字符;有关详细信息,请参阅下表。

注解

A 0 任何参数的值都将导致该参数使用默认字符。关键字参数可以 not 被使用。此表列出了默认值:

参数

描述

默认值

ls

左侧

ACS_VLINE

rs

右侧

ACS_VLINE

ts

顶部

ACS_HLINE

bs

底部

ACS_HLINE

tl

左上角

ACS_ULCORNER

tr

右上角

ACS_URCORNER

bl

左下角

ACS_LLCORNER

br

右下角

ACS_LRCORNER

window.box([vertch, horch])

类似 border() ,但两者 lsrs维尔奇 而且两者 tsbs霍奇 . 此函数始终使用默认的角字符。

window.chgat(attr)
window.chgat(num, attr)
window.chgat(y, x, attr)
window.chgat(y, x, num, attr)

设置的属性 num 当前光标位置或位置处的字符 (y, x) 如果提供。如果 num 没有给出或是 -1 ,属性将设置在所有字符的行尾。此函数将光标移动到位置 (y, x) 如果提供。将使用 touchline() 方法,以便在下次刷新窗口时重新显示内容。

window.clear()

类似于 erase() ,但也会在下次调用时重新绘制整个窗口 refresh() .

window.clearok(flag)

如果 flagTrue ,下次调用 refresh() 将完全清除窗口。

window.clrtobot()

从光标到窗口末端的擦除:删除光标下的所有行,然后等效于 clrtoeol() 执行。

window.clrtoeol()

从光标到行尾擦除。

window.cursyncup()

更新窗口所有祖先的当前光标位置,以反映窗口的当前光标位置。

window.delch([y, x])

删除任何字符 (y, x) .

window.deleteln()

删除光标下的行。以下所有行都上移一行。

window.derwin(begin_y, begin_x)
window.derwin(nlines, ncols, begin_y, begin_x)

“派生窗口”的缩写, derwin() 和调用一样吗 subwin() 除了 begin_ybegin_x 相对于窗口的原点,而不是整个屏幕。返回派生窗口的窗口对象。

window.echochar(ch[, attr])

添加字符 ch 带属性 attr ,然后立即调用 refresh() 在Windows上。

window.enclose(y, x)

测试给定的一对屏幕相对字符单元格坐标是否被给定的窗口包围,返回 TrueFalse .它可用于确定屏幕窗口的哪些子集包含鼠标事件的位置。

window.encoding

用于编码方法参数(Unicode字符串和字符)的编码。创建子窗口时,编码属性从父窗口继承,例如 window.subwin() . 默认情况下,使用区域设置编码(请参见 locale.getpreferredencoding()

3.3 新版功能.

window.erase()

打开窗口。

window.getbegyx()

返回元组 (y, x) 左上角的坐标。

window.getbkgd()

返回给定窗口的当前背景字符/属性对。

window.getch([y, x])

获得一个角色。请注意,返回的整数为 not 必须在ASCII范围内:功能键、键盘键等由大于255的数字表示。在无延迟模式下,返回 -1 如果没有输入,则等待按键。

window.get_wch([y, x])

获得广泛的字符。为大多数键返回一个字符,或为功能键、键盘键和其他特殊键返回一个整数。在无延迟模式下,如果没有输入,则引发异常。

3.3 新版功能.

window.getkey([y, x])

获取一个字符,返回一个字符串而不是一个整数,如 getch() 做。功能键、键盘键和其他特殊键返回包含键名的多字节字符串。在无延迟模式下,如果没有输入,则引发异常。

window.getmaxyx()

返回元组 (y, x) 窗口的高度和宽度。

window.getparyx()

以元组形式返回此窗口相对于其父窗口的起始坐标 (y, x) . 返回 (-1, -1) 如果此窗口没有父窗口。

window.getstr()
window.getstr(n)
window.getstr(y, x)
window.getstr(y, x, n)

从用户读取一个具有基本行编辑能力的bytes对象。

window.getyx()

返回元组 (y, x) 当前光标相对于窗口左上角的位置。

window.hline(ch, n)
window.hline(y, x, ch, n)

显示从以下位置开始的水平线 (y, x) 有长度 n 由角色组成 ch .

window.idcok(flag)

如果 flagFalse ,curses不再考虑使用终端的硬件插入/删除字符功能;如果 flagTrue ,启用字符插入和删除。首次初始化curses时,默认情况下启用字符插入/删除。

window.idlok(flag)

如果 flagTruecurses 将尝试使用硬件线路编辑设备。否则,将禁用行插入/删除。

window.immedok(flag)

如果 flagTrue 窗口图像中的任何更改都会自动刷新窗口;您不再需要调用 refresh() 你自己。但是,由于对wrefresh的重复调用,它可能会大大降低性能。默认情况下禁用此选项。

window.inch([y, x])

返回窗口中给定位置的字符。下面的8位是字符本身,上面的位是属性。

window.insch(ch[, attr])
window.insch(y, x, ch[, attr])

涂料特性 ch(y, x) 带属性 attr ,从位置移动线条 x 就一个字符。

window.insdelln(nlines)

插入 非线性 行到当前行上方的指定窗口中。这个 非线性 底线丢失。否定的 非线性 删除 非线性 从光标下的一行开始,并向上移动其余行。底部 非线性 行被清除。当前光标位置保持不变。

window.insertln()

在光标下插入空行。以下所有行都向下移动一行。

window.insnstr(str, n[, attr])
window.insnstr(y, x, str, n[, attr])

在光标下的字符之前插入一个字符串(最多可插入行中的字符数) n 字符。如果 n 为零或负数,将插入整个字符串。光标右侧的所有字符都右移,行中最右侧的字符将丢失。光标位置不变(移动到 yx ,如果指定)。

window.insstr(str[, attr])
window.insstr(y, x, str[, attr])

在光标下的字符之前插入一个字符串(尽可能多的字符适合行)。光标右侧的所有字符都右移,行中最右侧的字符将丢失。光标位置不变(移动到 yx ,如果指定)。

window.instr([n])
window.instr(y, x[, n])

返回从当前光标位置开始的窗口中提取的字符字节对象,或返回 yx 如果指定。从字符中去除属性。如果 n 已指定, instr() 最多返回一个字符串 n 字符长(不包括尾随的nul)。

window.is_linetouched(line)

返回 True 如果自上次调用以来修改了指定的行 refresh() ;否则返回 False . 举起一个 curses.error 例外如果 line 对于给定的窗口无效。

window.is_wintouched()

返回 True 如果自上次调用以来修改了指定的窗口 refresh() ;否则返回 False .

window.keypad(flag)

如果 flagTrue ,某些键(键盘、功能键)生成的转义序列将由 curses .如果 flagFalse ,转义序列将保留在输入流中。

window.leaveok(flag)

如果 flagTrue ,光标位于更新时的左侧,而不是位于“光标位置”。这将尽可能减少光标的移动。如果可能,光标将变为不可见。

如果 flagFalse ,更新后光标将始终位于“光标位置”。

window.move(new_y, new_x)

移动光标到 (new_y, new_x) .

window.mvderwin(y, x)

将窗口移动到其父窗口中。窗口的屏幕相关参数没有更改。此例程用于在屏幕上相同物理位置显示父窗口的不同部分。

window.mvwin(new_y, new_x)

移动窗口,使其左上角位于 (new_y, new_x) .

window.nodelay(flag)

如果 flagTruegetch() 将不阻塞。

window.notimeout(flag)

如果 flagTrue ,转义序列不会超时。

如果 flagFalse ,几毫秒后,转义序列将不会被解释,并将保留在输入流中。

window.noutrefresh()

标记为刷新,但请稍候。此函数更新表示窗口所需状态的数据结构,但不强制更新物理屏幕。为此,请致电 doupdate() .

window.overlay(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol])

将窗口覆盖在 德斯文 . 窗口大小不必相同,只复制重叠区域。此副本是非破坏性的,这意味着当前背景字符不会覆盖 德斯文 .

为了对复制的区域进行细粒度控制,第二种形式的 overlay() 可以使用。 斯米罗斯米科尔 是源窗口的左上角坐标,其他变量在目标窗口中标记一个矩形。

window.overwrite(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol])

覆盖窗口顶部 德斯文 . 窗口的大小不必相同,在这种情况下,只复制重叠区域。此副本具有破坏性,这意味着当前背景字符将覆盖 德斯文 .

为了对复制的区域进行细粒度控制,第二种形式的 overwrite() 可以使用。 斯米罗斯米科尔 是源窗口的左上角坐标,其他变量在目标窗口中标记一个矩形。

window.putwin(file)

将与窗口关联的所有数据写入提供的文件对象。稍后可以使用 getwin() 功能。

window.redrawln(beg, num)

表明 num 屏幕行,从行开始 beg ,已损坏,应在下一个 refresh() 调用。

window.redrawwin()

触摸整个窗口,使其在下一个窗口上完全重新绘制 refresh() 调用。

window.refresh([pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol])

立即更新显示(将实际屏幕与以前的绘图/删除方法同步)。

6个可选参数只能在窗口是用创建的PAD时指定。 newpad() . 需要额外的参数来指示所涉及的焊盘和屏幕的哪个部分。 普米罗普米科尔 指定要在填充中显示的矩形的左上角。 斯米罗斯米科尔斯马克罗斯马科尔 指定要在屏幕上显示的矩形的边缘。由于矩形的大小必须相同,因此要在填充板中显示的矩形的右下角是根据屏幕坐标计算的。两个矩形必须完全包含在各自的结构中。的负值 普米罗普米科尔斯米罗斯米科尔 被视为零。

window.resize(nlines, ncols)

重新分配Curses窗口的存储空间,以将其维度调整为指定的值。如果任何一个维度大于当前值,则窗口的数据将填充具有当前背景格式副本的空白(由设置 bkgdset() )融入其中。

window.scroll([lines=1])

向上滚动屏幕或滚动区域 线 线。

window.scrollok(flag)

控制当窗口的光标移离窗口边缘或滚动区域时发生的情况,无论是由于底线上的换行操作,还是键入最后一行的最后一个字符。如果 flagFalse ,光标留在底线上。如果 flagTrue ,窗口向上滚动一行。请注意,为了在终端上获得物理滚动效果,还需要调用 idlok() .

window.setscrreg(top, bottom)

从行设置滚动区域 top 连线 底部 . 所有滚动操作都将在此区域中进行。

window.standend()

关闭“突出显示”属性。在某些终端上,这有关闭所有属性的副作用。

window.standout()

启用属性 A_STANDOUT .

window.subpad(begin_y, begin_x)
window.subpad(nlines, ncols, begin_y, begin_x)

返回一个子窗口,其左上角位于 (begin_y, begin_x) ,宽度/高度为 恩科斯 / 非线性 .

window.subwin(begin_y, begin_x)
window.subwin(nlines, ncols, begin_y, begin_x)

返回一个子窗口,其左上角位于 (begin_y, begin_x) ,宽度/高度为 恩科斯 / 非线性 .

默认情况下,子窗口将从指定位置延伸到窗口的右下角。

window.syncdown()

触摸窗口中在其任何祖先窗口中被触摸过的每个位置。此例程由调用 refresh() ,所以几乎不需要手动调用它。

window.syncok(flag)

如果 flagTrue 然后 syncup() 每当窗口发生更改时自动调用。

window.syncup()

触摸已在窗口中更改的窗口祖先中的所有位置。

window.timeout(delay)

设置窗口的阻塞或非阻塞读取行为。如果 延迟 为负,使用阻塞读取(将无限期等待输入)。如果 延迟 为零,则使用非阻塞读取,并且 getch() 将返回 -1 如果没有输入等待。如果 延迟 是肯定的,那么 getch() 将阻止 延迟 毫秒,然后返回 -1 如果在该时间结束时仍然没有输入。

window.touchline(start, count[, changed])

假装 计数 行已更改,从行开始 开始 . 如果 改变 它指定受影响的行是否标记为已更改。( 改变 =True )或不变( 改变 =False

window.touchwin()

假设整个窗口已更改,以便进行绘图优化。

window.untouchwin()

将窗口中的所有行标记为自上次调用以来未更改 refresh() .

window.vline(ch, n)
window.vline(y, x, ch, n)

显示从开始的垂直线 (y, x) 有长度 n 由角色组成 ch .

常量

这个 curses 模块定义以下数据成员:

curses.ERR

一些返回整数的curses例程,例如 getch() 返回 ERR 失败后。

curses.OK

一些返回整数的curses例程,例如 napms() 返回 OK 成功了。

curses.version

表示模块当前版本的bytes对象。也可作为 __version__ .

curses.ncurses_version

包含ncurses库版本的三个组件的命名元组: 专业少数的补丁 . 所有值都是整数。组件也可以按名称访问,因此 curses.ncurses_version[0] 等于 curses.ncurses_version.major 等等。

可用性:如果使用了ncurses库。

3.8 新版功能.

有些常量可用于指定字符单元属性。可用的确切常数取决于系统。

属性

意义

A_ALTCHARSET

交替字符集模式

A_BLINK

闪烁模式

A_BOLD

粗体模式

A_DIM

调暗模式

A_INVIS

不可见或空白模式

A_ITALIC

斜体模式

A_NORMAL

正常属性

A_PROTECT

保护模式

A_REVERSE

反转背景色和前景色

A_STANDOUT

突出模式

A_UNDERLINE

下划线模式

A_HORIZONTAL

水平突出显示

A_LEFT

左高亮

A_LOW

低光照

A_RIGHT

右高亮

A_TOP

顶部突出显示

A_VERTICAL

垂直突出显示

A_CHARTEXT

提取字符的位掩码

3.7 新版功能: A_ITALIC 加入。

有几个常量可用于提取某些方法返回的相应属性。

位掩码

意义

A_ATTRIBUTES

提取属性的位掩码

A_CHARTEXT

提取字符的位掩码

A_COLOR

用于提取颜色对字段信息的位掩码

键由名称以开头的整数常量引用 KEY_ . 可用的确切键帽取决于系统。

密钥常数

KEY_MIN

最小键值

KEY_BREAK

断开键(不可靠)

KEY_DOWN

向下箭头

KEY_UP

向上箭头

KEY_LEFT

左箭头

KEY_RIGHT

右箭头

KEY_HOME

主页键(向上+左箭头)

KEY_BACKSPACE

退格(不可靠)

KEY_F0

功能键。最多支持64个功能键。

KEY_Fn

功能键值 n

KEY_DL

删除行

KEY_IL

插入行

KEY_DC

删除字符

KEY_IC

插入字符或进入插入模式

KEY_EIC

退出插入字符模式

KEY_CLEAR

清除屏幕

KEY_EOS

清除到屏幕末端

KEY_EOL

清除到行尾

KEY_SF

向前滚动1行

KEY_SR

向后滚动1行(后退)

KEY_NPAGE

下一页

KEY_PPAGE

前一页

KEY_STAB

设置选项卡

KEY_CTAB

清除标签

KEY_CATAB

清除所有选项卡

KEY_ENTER

输入或发送(不可靠)

KEY_SRESET

软(部分)复位(不可靠)

KEY_RESET

重置或硬重置(不可靠)

KEY_PRINT

打印

KEY_LL

Home Down或Bottom(左下)

KEY_A1

键盘左上角

KEY_A3

键盘右上角

KEY_B2

键盘中心

KEY_C1

键盘左下角

KEY_C3

键盘右下角

KEY_BTAB

后标签

KEY_BEG

乞求(开始)

KEY_CANCEL

取消

KEY_CLOSE

关闭

KEY_COMMAND

命令(命令)

KEY_COPY

拷贝

KEY_CREATE

创造

KEY_END

终点

KEY_EXIT

出口

KEY_FIND

发现

KEY_HELP

帮助

KEY_MARK

作记号

KEY_MESSAGE

消息

KEY_MOVE

移动

KEY_NEXT

接下来

KEY_OPEN

正常开放

KEY_OPTIONS

选项

KEY_PREVIOUS

前(前)

KEY_REDO

重做

KEY_REFERENCE

参考文献(参考文献)

KEY_REFRESH

刷新

KEY_REPLACE

替换

KEY_RESTART

重新启动

KEY_RESUME

简历

KEY_SAVE

保存

KEY_SBEG

移位求(开始)

KEY_SCANCEL

移位取消

KEY_SCOMMAND

移位命令

KEY_SCOPY

移位拷贝

KEY_SCREATE

移位创建

KEY_SDC

移位删除字符

KEY_SDL

移位删除行

KEY_SELECT

选择

KEY_SEND

移动端

KEY_SEOL

移位清除线

KEY_SEXIT

换位出口

KEY_SFIND

移位查找

KEY_SHELP

转移帮助

KEY_SHOME

搬家

KEY_SIC

移位输入

KEY_SLEFT

左移箭头

KEY_SMESSAGE

移位消息

KEY_SMOVE

移位移动

KEY_SNEXT

下一步

KEY_SOPTIONS

移位选项

KEY_SPREVIOUS

移位前置

KEY_SPRINT

移印

KEY_SREDO

移位重做

KEY_SREPLACE

移位替换

KEY_SRIGHT

右移箭头

KEY_SRSUME

转移简历

KEY_SSAVE

移位保存

KEY_SSUSPEND

移位挂起

KEY_SUNDO

移位撤销

KEY_SUSPEND

暂停

KEY_UNDO

撤消

KEY_MOUSE

鼠标事件已发生

KEY_RESIZE

终端调整大小事件

KEY_MAX

最大键值

在VT100及其软件仿真(如X终端仿真器)上,通常至少有四个功能键 (KEY_F1KEY_F2KEY_F3KEY_F4 )可用,箭头键映射到 KEY_UPKEY_DOWNKEY_LEFTKEY_RIGHT 很明显。如果您的机器有一个PC键盘,则可以安全地使用箭头键和十二个功能键(较旧的PC键盘可能只有十个功能键);此外,以下键盘映射是标准的:

键帽

常数

Insert

KEY_IC

Delete

KEY_DC

Home

KEY_HOME

End

KEY_END

Page Up

KEY_PPAGE

Page Down

KEY_NPAGE

下表列出了备用字符集中的字符。这些都是从VT100终端继承的,通常在软件仿真(如X终端)上可用。当没有可用的图形时,curses会回到一个粗糙的可打印的ASCII近似值上。

注解

这些只有在 initscr() 已被调用。

ACS码

意义

ACS_BBSS

右上角的替代名称

ACS_BLOCK

实心方形块

ACS_BOARD

广场委员会

ACS_BSBS

横线的替换名称

ACS_BSSB

左上角的替换名称

ACS_BSSS

Top T恤的备用名称

ACS_BTEE

下三通

ACS_BULLET

子弹

ACS_CKBOARD

棋盘(点画)

ACS_DARROW

向下箭头

ACS_DEGREE

度数符号

ACS_DIAMOND

钻石

ACS_GEQUAL

大于或等于

ACS_HLINE

水平线

ACS_LANTERN

灯笼符号

ACS_LARROW

左箭头

ACS_LEQUAL

小于或等于

ACS_LLCORNER

左下角

ACS_LRCORNER

右下角

ACS_LTEE

左三通

ACS_NEQUAL

不等号

ACS_PI

字母PI

ACS_PLMINUS

正负号

ACS_PLUS

大加号

ACS_RARROW

右箭头

ACS_RTEE

右三通

ACS_S1

扫描线1

ACS_S3

扫描线3

ACS_S7

扫描线7

ACS_S9

扫描线9

ACS_SBBS

右下角的替代名称

ACS_SBSB

竖线的替换名称

ACS_SBSS

右T恤的替代名称

ACS_SSBB

左下角的替换名称

ACS_SSBS

底部三通的替代名称

ACS_SSSB

左T恤的替代名称

ACS_SSSS

交叉或Big Plus的备用名称

ACS_STERLING

英镑

ACS_TTEE

上三通

ACS_UARROW

向上箭头

ACS_ULCORNER

左上角

ACS_URCORNER

右上角

ACS_VLINE

垂线

下表列出了预定义的颜色:

常数

颜色

COLOR_BLACK

黑色

COLOR_BLUE

蓝色

COLOR_CYAN

青色(浅绿色蓝色)

COLOR_GREEN

绿色

COLOR_MAGENTA

洋红(紫红色)

COLOR_RED

红色

COLOR_WHITE

白色

COLOR_YELLOW

黄色的

curses.textpad ---用于Curses程序的文本输入小部件

这个 curses.textpad 模块提供 Textbox 在Curses窗口中处理基本文本编辑的类,支持一组类似于Emacs的键绑定(因此,也包括Netscape Navigator、BBedit 6.x、Framemaker和许多其他程序)。该模块还提供了一个矩形绘图功能,可用于设置文本框框架或其他用途。

模块 curses.textpad 定义以下函数:

curses.textpad.rectangle(win, uly, ulx, lry, lrx)

画一个矩形。第一个参数必须是窗口对象;其余参数是相对于该窗口的坐标。第二个和第三个参数是要绘制的矩形左上角的y和x坐标;第四个和第五个参数是右下角的y和x坐标。矩形将使用vt100/ibm pc表单字符在终端上绘制,从而使这成为可能(包括xterm和大多数其他软件终端仿真器)。否则将使用ASCII短划线、竖线和加号绘制。

文本框对象

您可以实例化 Textbox 对象如下:

class curses.textpad.Textbox(win)

返回文本框小部件对象。这个 win 参数应该是curses window 要包含文本框的对象。文本框的编辑光标最初位于包含窗口的左上角,带有坐标 (0, 0) . 实例 stripspaces 标志最初打开。

Textbox 对象具有以下方法:

edit([validator])

这是您通常使用的入口点。它接受编辑击键,直到输入一个终止击键。如果 验证器 提供了,它必须是一个函数。它将对以按键作为参数输入的每个按键进行调用;对结果执行命令调度。此方法以字符串形式返回窗口内容;窗口中的空白是否包含受 stripspaces 属性。

do_command(ch)

处理一个命令击键。以下是支持的特殊按键:

击键

行动

Control-A

转到窗口的左边缘。

Control-B

光标向左,适当时换行到上一行。

Control-D

删除光标下的字符。

Control-E

转到右边缘(stripspaces off)或行尾(stripspaces on)。

Control-F

光标向右,适当时换行到下一行。

Control-G

终止,返回窗口内容。

Control-H

向后删除字符。

Control-J

如果窗口为1行,则终止,否则插入换行符。

Control-K

如果行为空,则将其删除,否则清除为行尾。

Control-L

刷新屏幕。

Control-N

向下光标;向下移动一行。

Control-O

在光标位置插入空行。

Control-P

向上移动光标;向上移动一行。

如果光标位于无法移动的边缘,则移动操作不执行任何操作。在可能的情况下,支持以下同义词:

常数

击键

KEY_LEFT

Control-B

KEY_RIGHT

Control-F

KEY_UP

Control-P

KEY_DOWN

Control-N

KEY_BACKSPACE

Control-h

所有其他击键都被视为插入给定字符并向右移动(换行)的命令。

gather()

以字符串形式返回窗口内容;窗口中的空白是否包含受 stripspaces 成员。

stripspaces

此属性是控制窗口中空白的解释的标志。如果启用,则忽略每行的尾随空格;将光标放在尾随空格上的任何光标移动都将转到该行的末尾,而当收集窗口内容时,尾随空格将被剥离。