You are here:  Home » Python » 字符单元格显示的终端处理 – 通用操作系统服务(Python教程)(参考资料)

curses– 用于字符单元显示的终端处理


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

虽然curses在Unix环境中使用最为广泛,但版本可用于Windows,DOS以及其他系统。此扩展模块设计为匹配ncurses的API,一个托管在Linux上的开源curses库和Unix的BSD变体.

注意

每当文档提到character时,它可以指定为整数,一个字符的Unicode字符串或一个字节的字节串.

每当文档提到一个character string它可以指定为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
可编辑的文本小部件,用于支持的诅咒Emacs – like bindings.
使用Python进行Curses编程
关于使用Python的curses的教程资料,作者:Andrew Kuchling和EricRaymond .

Python源代码中的Tools / demo /目录包含一些使用该模块提供的curses绑定的示例程序.

 

功能

模块curses定义以下异常:

exception curses.error
当curses库函数返回错误时引发异常.

注意

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

模块curses定义以下功能:

curses.baudrate
以每秒位数返回终端的输出速度。在软件终端模拟器上,它将具有固定的高值。包括历史原因;以前,它被用来为时间延迟写输出循环,偶尔根据线速度改变界面.
curses.beep ()
发出短暂的注意声。
curses.can_change_color
返回TrueFalse,取决于程序员是否可以改变终端显示的颜色
curses.cbreak
进入cbreak模式。在cbreak模式(有时称为“稀有”模式)中,正常的ttyline缓冲被关闭,字符可以逐个读取。但是,与原始模式不同,特殊字符(中断,退出,暂停和流控制)保留其效果tty驱动程序和调用程序。Callingfirst raw()然后cbreak()让终端处于cbreak模式.
curses.color_content (color_number)
返回红色,绿色的强度,颜色为color_number的蓝色和蓝色(RGB)成分,必须在0COLORS之间。返回一个3元组,包含给定颜色的R,G,B值,它们介于0(无分量)和1000(最大分量)之间.
curses.color_paircolor_number
返回以指定颜色显示文本的属性值。此属性值可以与A_STANDOUT, A_REVERSE和其他A_*属性组合使用。pair_number()是这个功能的对应物.
curses.curs_set (visibility)
设置光标状态。visibility可以设置为0, 1,或2,对于隐形,正常或非常明显。如果终端支持请求的可见性,则返回以前的游标状态;否则提出异常。在多端,“可见”模式是下划线光标,“非常可见”模式是块光标.
curses.def_prog_mode ()
保存当前终端模式为“程序”模式,即运行程序使用curses时的模式。(它的对应物是“shell”模式,因为当程序没有诅咒时。)随后调用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
进入回显模式。在回音模式下,每个字符输入都会在输入时回显到屏幕上.
curses.endwin()
取消初始化库,并使终端恢复正常状态.
curses.erasechar
将用户的当前擦除字符作为单字节字节对象返回。在Unix操作系统下,这是curses程序控制tty的属性,并不是由curses库本身设置的.
curses.filter
如果使用了filter()例程,必须在调用initscr()之前调用它。结果是,在这些调用期间,LINES设置为1;能力clear, cup, cud, cud1, cuu1, cuu, vpa被禁用;和homestring设置为cr。效果是光标被限制在当前行,屏幕更新也是如此。这可以用于在不触摸屏幕的其余部分的情况下一次性进行字符编辑.
curses.flash
闪屏。也就是说,将其更改为反向视频,然后在短时间内将其更改回来。有些人更喜欢“可见铃声”来发出beep().
curses.flushinp
刷新所有输入缓冲区。这会丢弃任何由用户输入并且尚未被程序处理的类型.
curses.getmouse ()
getch()返回后KEY_MOUSE要发出鼠标事件的信号,应该调用此方法来检索排队的鼠标事件,表示为a5-tuple (id, x, y, z, bstate). id是用于区分多个设备的ID值,和x, y, z是事件的坐标。(z目前尚未使用。)bstate是一个整数值,其位将被设置为指示事件的类型,并且将是以下常量中的一个或多个的按位OR,其中n是从1到4的按钮编号:BUTTONn_PRESSED, BUTTONn_RELEASED, BUTTONn_CLICKED,BUTTONn_DOUBLE_CLICKED, BUTTONn_TRIPLE_CLICKED,BUTTON_SHIFT, BUTTON_CTRL, BUTTON_ALT.
curses.getsyx
将虚拟屏幕光标的当前坐标作为元组(y, x)返回。如果leaveok当前是True,那么返回(-1, -1).
curses.getwinfile
通过较早的putwin()调用读取存储在文件中的窗口相关数据。例程然后使用该数据创建并初始化一个新窗口,返回新窗口对象.
curses.has_colors (
返回True如果终端可以显示颜色;否则,返回False.
curses.has_ic
如果终端具有插入和删除字符功能,则返回True。此功能仅包含历史原因因为所有现代软件终端模拟器都具备这样的功能.
curses.has_il ()
返回True如果终端具有插入和删除线功能,或者使用滚动区域来模拟它们。此功能仅出于历史原因,因为所有现代软件终端仿真器都具有此类功能.
curses.has_key (ch)
取一个键值ch,并返回True如果当前终端类型识别出具有该值的键.
curses.halfdelay(tenths)
用于半延迟模式,类似于cbreak模式因为用户输入的字符可立即用于该程序。但是,在阻塞tenths十分之几秒之后,如果没有输入任何内容,则引发异常。tenths的值必须是1255之间的数字。使用nocbreak()离开半延迟模式.
curses.init_color (color_number, r, g, b)
改变颜色的定义,将要改变的颜色数量跟随三个RGB值(对于一定量的红色,绿色和蓝色组分)。color_number的值必须在0COLORS之间。每个r, g, b,必须是01000之间的值。使用init_color()时,屏幕上所有出现的颜色都会立即更改为新定义。该功能是一个无操作的终端;只有当can_change_color()返回True.
curses.init_pairpair_number, fg, bg)时才会激活
更改颜色对的定义。它需要三个参数:要更改的颜色对的数量,前景颜色编号和背景颜色编号。pair_number的值必须介于1COLOR_PAIRS - 1之间(0颜色对在黑色上连接为白色并且无法更改)。fgbg参数的值必须在0COLORS。如果先前已初始化颜色对,则刷新屏幕并将所有出现的颜色对更改为newdefinition.
curses.initscr
初始化库。返回窗口对象代表整个屏幕.

注意

如果打开终端有错误,底层的curses库可能会导致翻译退出.

curses.is_term_resizednlines, ncols
返回True如果resize_term()会修改窗口结构,False否则
curses.isendwin// ()
返回True如果endwin()被调用(也就是说,curses库已被取消初始化).
curses.keynamek
返回编号为的密钥的名称k作为字节对象。生成printableASCII字符的键的名称是键的字符。控制键组合的名称是一个由插入符号组成的双字节字节对象(b"^")后跟相应的可打印ASCII字符。alt键组合的名称(128-255)是由前缀b"M-"然后是相应的ASCII字符的名称.
curses.killchar ( )
将用户的当前行终止字符作为单字节字节对象返回。在Unix操作系统下,这是curses程序控制tty的属性,不是由curses库本身设置的.
curses.longname
返回一个bytes对象,其中包含描述currentterminal的terminfo long name字段。详细描述的最大长度为128个字符。只有在调用initscr().
curses.metaflag
如果flagTrue,允许输入8位字符。如果flagFalse,只允许7位字符
curses.mouseintervalinterval)
设置按下和释放事件之间可以经过的最长时间(以毫秒为单位),以便将它们识别为单击,并返回上一个间隔值。默认值为200毫秒,或五分之一秒.
curses.mousemaskmousemask
设置要报告的鼠标事件,并返回一个元组(availmask,oldmask). availmask指示可以报告哪些指定的鼠标事件;在完全失败时返回0. oldmask是给定窗口的鼠标事件掩码的先前值。如果从未调用此函数,则不会报告任何鼠标事件.
curses.napmsms)
睡觉ms毫秒.
curses.newpadnlines, ncols
创建并返回指向具有给定行数和列数的新填充数据结构的指针。将垫子作为窗口对象返回.

垫子就像一个窗口,除了它不受屏幕尺寸的限制,并且不一定与屏幕的特定部分相关联。当需要大窗口时,可以使用垫,并且窗口的一部分一次只能在屏幕上。不会发生垫的自动刷新(例如来自滚动输入的输出)。垫的refresh()noutrefresh()方法需要6个参数来指定要显示的打击垫部分以及屏幕上用于显示的位置。这些争论是pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol;p参数指的是要显示的打击垫区域的左上角,s参数定义了一个裁剪框,在该屏幕上将显示打击垫区域.

curses.newwin(nlines, ncols
curses.newwinnlines, ncols, begin_y, begin_x
返回一个新的窗口,其左上角是(begin_y, begin_x),其高度/宽度为nlines/ncols.

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

curses.nl
输入换行模式。此模式将返回键转换为输入上的换行符,并将换行符转换为输出中的返回键和换行符。换行模式最初是打开的
curses.nocbreak)
离开cbreak模式。用线缓冲恢复正常的“煮熟”模式.
curses.noecho ( )
离开回声模式。关闭输入字符的回声.
curses.nonl ()
离开换行模式。禁止在输入时将返回转换为换行符,并禁止将换行符的低级转换为newline / return on output(但这不会改变addch("\n"),它总是与虚拟屏幕上的返回和换行相等。通过翻译,诅咒有时可以加快垂直运动;也可以在输入时检测返回键.
curses.noqiflush
当使用noqiflush()例程时,正常刷新与INTR, QUITSUSP字符关联的输入和输出队列将没有做。你可能想打电话noqiflush()在一个信号处理程序中如果你想输出tocontinue就好像没有发生中断,在处理程序退出后
curses.noraw// ( )
离开原始模式。用线缓冲恢复正常的“煮熟”模式.
curses.pair_contentpair_number)
返回包含所要求颜色对颜色的元组(fg, bg)pair_number的值必须在1COLOR_PAIRS - 1.
curses.pair_numberattr
返回由属性值设置的颜色对的编号attr.color_pair()是此函数的对应物.
curses.putpstr
相当于 tputs(str, 1, putchar);为当前终端发出指定的minminfo功能的值。请注意,putp()的输出始终为标准输出.
curses.qiflush ( [flag])
如果flagFalse,效果与调用noqiflush()相同。如果flagTrue,或者没有提供参数,那么当读取控制字符时队列将被刷新.
curses.raw ( )
进入原始模式。在原始模式下,正常行缓冲和中断,退出,挂起和流量控制键的处理被关闭;字符用于逐个诅咒输入功能.
curses.reset_prog_mode()
将终端恢复为“程序”模式,如先前由def_prog_mode().
curses.reset_shell_mode
将终端恢复为“shell”模式,如前所述def_shell_mode().
curses.resetty
恢复状态终端模式到最后一次调用的时候savetty().
curses.resize_termnlines, ncols
resizeterm()使用的后端函数,执行大部分工作;调整窗口大小,resize_term()空白填充延伸的区域。调用应用程序应使用适当的数据填写这些区域。resize_term()函数尝试调整allwindows的大小。然而,由于垫的调用惯例,如果没有与应用程序的额外交互,就不可能调整它们的大小.
curses.resizeterm(nlines, ncols)
重新调整标准和当前窗口指定的尺寸,并调整curses库使用的记录窗口尺寸的其他簿记数据(特别是SIGWINCH处理程序).
curses.savetty
保存当前状态缓冲区中的终端模式,可用于resetty().
curses.setsyxy, x
将虚拟屏幕光标设置为y, x。如果yx都是-1,则leaveok设置True.
curses.setuptermterm=None, fd=-1
初始化终端。term是一个给出终端名称的字符串,或None;如果省略或None,将使用TERM环境变量的值。fd是将发送任何初始化序列的文件描述符;如果不提供或-1,将使用sys.stdout的文件描述符.
curses.start_color()
如果程序员必须调用想要使用颜色,并且在调用任何其他颜色操作例程之前。最好在initscr().

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

curses.termattrs ()
返回所有支持的视频属性的逻辑或终点站。当curses程序需要完全控制屏幕的外观时,这个信息很有用.
curses.termname ()
返回环境变量的值TERM,作为一个字节对象,截断为14个字符.
curses.tigetflag (capname
返回与terminfocapability名称capname对应的布尔功能的值作为整数。返回值-1如果capname不是aBoolean功能,或0如果取消或没有在terminaldescription.
curses.tigetnum(capname
返回与terminfocapability名称capname对应的数字功能的值作为整数。返回值-2如果capname不是数字能力,或者-1如果取消或没有出现在terminaldescription.
curses.tigetstr(capname
返回与terminfocapability名称capname对应的字符串功能的值作为字节对象。返回None如果capname不是终止“字符串能力”,或者取消或不存在于终端描述中.
curses.tparm (str [, ]
使用提供的参数实例化bytes对象str,其中str应该是从terminfo数据库获取的参数化字符串。例如tparm(tigetstr("cup"), 5, 3)可能导致b"\033[6;4H",具体取决于终端类型.
curses.typeahead(fd)
指定文件描述符fd用于先行检查。如果fd-1,那么就不会进行先行检查.

curses库通过在更新屏幕时查找类型来进行“线路突破优化”。如果找到输入,并且它来自tty,则推迟当前更新,直到调用刷新或doupdate为止,允许更快地响应预先键入的命令。这个函数用于为typeahead检查指定一个不同的文件描述符.

curses.unctrl (ch)
返回一个字节对象,它是字符ch的可打印表示。控制字符表示为插入符号,后跟字符,例如b"^C"。打印字符保持不变.
curses.ungetch(ch)
Push ch所以下一个getch()将它还原

注意

在调用ch之前只能推一个getch().

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

版本3.5中的新功能

curses.unget_wchch
ch所以下一个get_wch()将它归还.

注意

只有一个 ch可以在get_wch()被叫.

新版本3.3.

curses.ungetmouse (id, x, y, z, bstate)
KEY_MOUSE事件推入输入队列,关联给它的给定数据.
curses.use_env (flag )
如果使用,应在initscr()或称为新时期。什么时候 flagFalse,即使环境变量LINESCOLUMNS(默认情况下使用)已设置,或者如果curses在awindow中运行(在这种情况下默认行为是使用窗口大小,如果没有设置LINESCOLUMNS).
curses.use_default_colors
允许在支持此功能的终端上使用颜色的默认值。使用它来支持应用程序的透明度。默认颜色分配给颜色编号-1。调用此函数后,init_pair(x,curses.COLOR_RED, -1)例如,在默认背景上将颜色对x初始化为redforeground颜色.
curses.wrapper (func, )
初始化curses并调用另一个可调用对象,func,这应该是你的curses使用应用程序。如果应用程序引发异常,则此函数将在重新引发异常并生成回溯之前将终端恢复到理智状态。然后将可调用对象func作为其第一个参数传递给主窗口“stdscr”,然后将任何其他参数传递给wrapper()。在调用func, wrapper()打开oncbreak模式之前,关闭echo,启用终端键盘,并在终端有颜色支持时初始化颜色。在退出时(无论是正常还是异常),它恢复煮熟模式,打开回声,并禁用终端键盘.

 

窗口对象

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

window.addchch [, attr]
window.addchy, x, ch [, attr]
画字ch at (y, x) with attributes attr,覆盖在该位置的任何字符以前的画家。默认情况下,字符位置和属性是窗口对象的当前设置.

注意

在窗外,子窗口或垫子外面写一个curses.error。在打印字符后,尝试写入窗口,子窗口或打击垫的右下角会引发异常.

window.addnstr (str, n [, attr]
window.addnstry, x, str, n [, attr]
最多绘制n字符串str的字符(y, x)使用属性attr,覆盖显示器上的任何内容。
window.addstrstr [, attr]
window.addstry, x, str [, attr]
使用str(y, x)上绘制字符串attr,覆盖显示屏上的任何内容.

注意

在窗口,子窗口或垫子外面写字curses.error。在打印字符串后,尝试写入窗口,子窗口或打击垫的右下角会引发异常.

window.attroff (attr )
从应用于当前窗口的所有写入的“背景”设置中删除属性attr.
window.attron(attr)
添加属性attr从“背景”设置应用于当前窗口的所有写入.
window.attrset (attr)
将“背景”属性集设置为attr。这套最初是0(没有属性).
window.bkgdch [, attr]
集窗口的背景属性为ch,具有attr的字符。然后将更改应用于窗口中的每个字符位置:

  • 窗口中每个字符的属性都更改为newbackground属性.
  • 无论前一个背景字符出现,它都会更改为newbackground character.
window.bkgdset (ch [, attr])
设置窗口的背景。窗口的背景由角色和属性的任意组合组成。背景的属性部分与写入窗口的所有非空白字符组合(OR)。背景的字符和属性部分都与空白字符组合在一起。背景成为角色的属性,并通过任何滚动和插入/删除线/角色操作随角色移动.
window.border ( [ls [, rs [, ts [, bs [, tl [, tr [, bl [, br] ] ] ] ] ] ] ]
在窗口边缘画一个边框。每个参数指定用于边界特定部分的字符;请参阅下表以获取更多详细信息.

注意

任何参数的值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都是vertchtsbshorch。此功能始终使用默认的角落字符.
window.chgat (attr )
window.chgat (num, attr )
window.chgat (y, x, attr
window.chgaty, x, num, attr
在当前光标位置设置num字符的属性,如果提供的话,设置(y, x)的属性。如果没有给出num-1,则该属性将设置在行尾的所有字符上。此功能将光标移动到位置(y, x)(如果提供)。使用touchline()方法触摸更改的行,以便在下一个窗口刷新时重新显示内容.
window.clear (
erase(),但也会导致整个窗口重新粉刷到refresh().
window.clearokflag
如果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().
window.enclose(y, x)
测试给定窗口是否关闭给定的一对屏幕相对字符单元格坐标,返回TrueFalse。它可用于确定屏幕窗口的哪个子集包含鼠标事件的位置.
window.encoding
用于编码方法参数的编码(Unicode字符串和字符)。在创建子窗口时,编码属性从父窗口继承,例如使用window.subwin()。默认情况下,使用localeencoding(见locale.getpreferredencoding()).

新版本3.3.

window.erase ()
清除window.
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)。如果这个窗户有noparent (-1, -1),请返回
window.getstr
window.getstrn
window.getstry, x
window.getstry, x, n
从用户那里读取一个字节对象,具有原始行编辑能力.
window.getyx ()
返回一个元组(y, x)当前光标位置相对于窗口的左上角.
window.hline (ch, n )
window.hline (y, x, ch, n )
显示水平线从(y, x)开始,长度n由字符组成ch.
window.idcokflag
如果flagFalse,curses不再考虑使用终端的硬件插入/删除字符功能;如果flagTrue,则启用字符插入和删除。首次初始化curses时,默认启用characterinsert / delete使用.
window.idlok (flag
如果flagTrue, curses将尝试使用硬件线路设施。否则,线路插入/删除被禁用.
window.immedok (flag)
如果flagTrue,窗口图像有任何变化自动使窗口刷新;你不再需要自己打电话refresh()。但是,由于反复调用towrefresh,它可能会大大降低性能。默认情况下禁用此选项.
window.inch ( [y, x])
返回窗口中给定位置的字符。底部8位是正确的字符,高位是属性.
window.inschch [, attr]
window.inschy, x, ch [, attr]
ch(y, x)上画字符attr,将线条组合x右移一个字符.
window.insdelln(nlines)
插入nlines线条进入上方指定的窗口当前行。nlines底线丢失了。对于否定nlines,删除nlines用光标下的一行开始,然后向上移动剩余的行。thebottom nlines行被清除。当前光标位置仍然相同.
window.insertln (
在光标下插入一个空行。以下所有行都被oneline向下移动
window.insnstr (str, n [, attr])
window.insnstr(y, x, str, n[, attr]
在光标下方的字符前插入一个字符串(符合线条的字符数),最多为n字符。如果n为零或负,插入整个字符串。光标右侧的所有字符向右移动,线上最右边的字符丢失。光标位置不变(移动到y, x后,如果指定).
window.insstrstr [, attr]
window.insstry, x, str [, attr]
在光标下的字符前插入一个字符串(符合该行的字符数)。光标右侧的所有字符都向右移动,线上最右边的字符丢失。光标位置不变(移动到y, x后,如果指定).
window.instr [n]
window.instry, x [, n]
返回一个字节对象,从当前光标位置开始从窗口中提取,或者在y, x如果指定的话。属性从字符中剥离。如果指定ninstr()返回一个字符串,大多数n字符长(不包括尾随NUL).
window.is_linetouchedline
返回True如果指定的行自上次调用refresh()后被修改;否则返回False。如果curses.error对于给定的窗口无效,则提出line异常.
window.is_wintouched ()
返回True如果指定的窗口自上次调用refresh()后被修改;否则返回False.
window.keypadflag
如果flagTrue,某些键(键盘,功能键)生成的转义序列将由解释curses。如果flagFalse,转义序列将在输入流中完成.
window.leaveokflag
如果flagTrue,光标位于更新位置,而不是“光标位置”。这会尽可能减少光标的移动。如果可能的话,光标会变得不可见.

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

window.movenew_y, new_x)
将光标移动到(new_y, new_x).
window.mvderwiny, x
将窗口移动到其父窗口中。窗口的屏幕相关参数不会改变。此程序用于在屏幕上相同的物理位置显示父窗口的不同部分.
window.mvwinnew_y, new_x
移动窗口使其左上角位于(new_y, new_x).
window.nodelayflag
如果flagTrue, getch()将是无阻塞的
window.notimeoutflag)
如果flagTrue,转义序列不会超时.

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

window.noutrefresh ()
标记为刷新但等待。此功能更新表示窗口所需状态的数据结构,但不强制更新物理屏幕。要做到这一点,请致电doupdate().
window.overlaydestwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol]
覆盖destwin。窗口不需要大小相同,只复制重叠区域。此副本是非破坏性的,这意味着当前背景字符不会覆盖destwin.

的旧内容。为了对复制的区域进行细粒度控制,可以使用overlay()的第二种形式。sminrowsmincol是源窗口的左上方坐标,其他变量在目标窗口中标记一个矩形.

window.overwrite (destwin [, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol]
覆盖destwin顶部的窗口。窗口不需要是相同的大小,在这种情况下只复制重叠区域。此副本具有破坏性,这意味着当前背景字符会覆盖destwin.

的旧内容。要对复制的区域进行细粒度控制,可以使用overwrite()的第二种形式。sminrowsmincol是源窗口的左上角坐标,其他变量在目标窗口标记一个矩形.

window.putwin (file
上面的窗口将与窗口关联的所有数据写入提供的文件对象。以后可以使用getwin()功能
window.redrawlnbeg, num
表示num屏线,从行开始beg,是腐败的,应该在下一个完全重绘refresh()呼叫。
window.redrawwin
触摸整个窗口,使其在下一个refresh()来电时完全重绘
window.refresh ( [pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol]
立即更新显示(使用先前绘制/删除方法同步实际屏幕).

当窗口是用newpad()。需要额外的参数来指示垫和屏幕的哪个部分。pminrowpmincol指定要在打击垫中显示的矩形的左上角。sminrow,smincol, smaxrow,和smaxcol指定要在屏幕上显示的矩形边缘。在屏幕坐标中显示的矩形的右下角是根据屏幕坐标计算的,因为它们的大小必须相同。两个矩形必须完全包含在它们各自的结构中。负值pminrow, pmincol,sminrow,或smincol被视为零.

window.resize (nlines, ncols )
为curses窗口重新分配存储,以将其维度调整为指定的值。如果任一维度大于当前值,则窗口的数据将填充具有当前背景的空白(由bkgdset()合并到它们中
window.scroll [lines=1])
滚动屏幕或向上滚动区域lines lines.
window.scrollok(flag)
控制当窗口的光标移动到窗口或滚动区域的边缘时发生的情况,或者是由于底线上的换行操作,或者键入最后一行的最后一个字符。如果flagFalse,光标留在底线。如果flagTrue,窗口向上滚动一行。注意,为了在终端上获得物理滚动效果,还需要调用idlok().
window.setscrregtop, bottom
从行top到线 bottom。所有滚动操作都将在此区域进行.
window.standend
关闭杰出的属性。在某些终端上,这会产生所有属性​​的副作用.
window.standout
打开属性A_STANDOUT.
window.subpadbegin_y, begin_x
window.subpadnlines, ncols, begin_y, begin_x
返回一个子窗口,其左上角位于(begin_y, begin_x),其宽度/高度为ncols/nlines.
window.subwinbegin_y, begin_x
window.subwinnlines, ncols, begin_y, begin_x
返回一个子窗口,其左上角位于(begin_y, begin_x),其宽度/高度为ncols/nlines.

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

window.syncdown ( )
触摸窗口中已触及其任何祖先窗口的每个位置。这个例程由refresh()调用,所以几乎不需要手动调用它.
window.syncok (flag)
如果flagTrue, 然后 syncup()窗口发生变化时自动调用.
window.syncup
触摸窗口中已更改的窗口祖先中的所有位置.
window.timeout (delay)
设置窗口的阻塞或非阻塞读取行为。如果delayisnegative,使用阻塞读取(将无限期地等待输入)。如果delay为零,则使用非阻塞读取,如果没有输入正在等待,getch()将返回-1。如果delay是肯定的,然后getch()将阻塞delay毫秒,如果在那个时间结束时仍然没有输入则返回-1.
window.touchline(start, count [, changed]
假装count线条已经改变,从第行开始start。如果changed提供,它指定受影响的行是否标记为已更改(changed=True)或不变(changed=False).
window.touchwin
假装整个窗口已被更改,以便进行绘图优化.
window.untouchwin
自上次调用refresh().
window.vlinech, n
window.vliney, x, ch, n
显示一个从(y, x)开始的垂直线,长度为n由字符组成ch.

常量

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

curses.ERR
一些curses返回整数的例程,比如getch(),返回ERR失败时
curses.OK
一些curses返回整数的例程,比如napms(),返回OK成功时
curses.version
表示模块当前版本的字节对象。也可以作为__version__.

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

属性 含义
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添加了

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

Bit-mask Meaning
A_ATTRIBUTES Bit-mask提取属性
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 主页向下或向下(左下方)
KEY_A1 键盘左上方
KEY_A3 键盘右上方
KEY_B2 键盘中心
KEY_C1 键盘左下方
KEY_C3 键盘右下方
KEY_BTAB 后退标签
KEY_BEG 请求(开始)
KEY_CANCEL 取消
KEY_CLOSE 关闭
KEY_COMMAND Cmd(命令)
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 最大键值

在VT100s及其上软件仿真,如X终端仿真器,通常至少有四个功能键(KEY_F1, KEY_F2,KEY_F3, KEY_F4)可用,箭头键以明显的方式映射到KEY_UP, KEY_DOWN, KEY_LEFTKEY_RIGHT。如果您的机器有PC键盘,可以安全地使用箭头键和12个功能键(旧的PC键盘可能只有10个功能键);另外,以下键盘映射是标准的:

键帽 不断
插入 KEY_IC
删除 KEY_DC
首页 KEY_HOME
结束 KEY_END
Page Up KEY_PPAGE
Page Down KEY_NPAGE

下表列出了备用字符集中的字符。这些都来自VT100终端,通常可用于软终端,如X终端。当没有可用的图形时,cursesfalls返回粗糙的可打印ASCII近似值.

注意

只有在调用了initscr()之后才能使用它们.

ACS code 含义
ACS_BBSS 右上角的替代名称
ACS_BLOCK 实心方块
ACS_BOARD 方块
ACS_BSBS 水平线的备用名称
ACS_BSSB 左上角的备用名称
ACS_BSSS 顶部三通的备用名称
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 字母
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 右边三通的替代名称
ACS_SSBB 左下角的替代名称
ACS_SSBS 底部三通的替代名称
ACS_SSSB 左三通的替代名称
ACS_SSSS 交叉或大加的替代名称
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和许多其他程序)。该模块还提供了用于框架文本框或其他用途的arectangle-drawing功能.

模块curses.textpad定义了以下功能:

curses.textpad.rectanglewin, uly, ulx, lry, lrx
画一个矩形。第一个参数必须是一个窗口对象;剩下的参数是相对于该窗口的坐标。第二和第三个参数是要绘制的三角形的左上角的y和x坐标;第四和第五个参数是右下角的y和x坐标。矩形将使用VB100 / IBM PC在终端上绘制字符,使这成为可能(包括xterm和大多数其他软件终端仿真器)。否则它将用ASCII破折号,垂直条和加号绘制.

 

文本框对象

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

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

Textbox对象有以下方法:

edit [validator]
这是您通常使用的入口点。它接受编辑键击,直到输入一个终止键击。如果提供validator,它必须是一个函数。它将被称为foreach键击,以击键作为参数输入;命令dispatchis对结果完成。此方法将窗口内容作为astring返回;是否包含窗口中的空白是否受stripspaces属性的影响
do_command (ch)
处理单个命令按键。以下是支持的特殊键击:

按键 动作
控制-A 走到窗口的左边缘
Control-B 光标向左,包裹到前一行如果适当的话
控制 - D 删除光标下的字符.
控制--E 转到右边缘(条带空间关闭)或行尾(条带空间).
控制-F 向右移动光标,适当时包裹到下一行.
Control-G 终止,返回窗口内容.
控制-H 向后删除字符
控制-J 如果窗口是1行则终止,否则插入换行符
控制-K 如果线是空白的,删除它,否则清楚到线的末端.
控制 - L 刷新屏幕.
控制 - 向下;向下移动一行
控制--O 在光标位置插入一个空行.
Control-P 追踪;向上移动一行

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

常量 按键
KEY_LEFT 控制-B
KEY_RIGHT Control-F
KEY_UP Control-P
KEY_DOWN Control-N
KEY_BACKSPACE Control-h

所有其​​他击键被视为插入给定字符和移动的命令对(用换行).

gather
将窗口内容作为字符串返回;是否包含窗口中的空白是否受stripspaces member.
stripspaces
的影响。该属性是一个控制窗口中空白解释的标志。当它打开时,每行的尾随空白被忽略;将光标落在尾随空白上的任意光标移动会转移到该行的末端,并且当窗口内容被收集时,尾随空白被剥离.