字符单元格显示的终端处理 – 通用操作系统服务(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库函数返回错误时引发异常.
模块curses定义以下功能:
curses.beep()- 发出短暂的注意声。
curses.can_change_color()- 返回
True或False,取决于程序员是否可以改变终端显示的颜色
curses.cbreak()- 进入cbreak模式。在cbreak模式(有时称为“稀有”模式)中,正常的ttyline缓冲被关闭,字符可以逐个读取。但是,与原始模式不同,特殊字符(中断,退出,暂停和流控制)保留其效果tty驱动程序和调用程序。Callingfirst
raw()然后cbreak()让终端处于cbreak模式.
curses.color_content(color_number)- 返回红色,绿色的强度,颜色为color_number的蓝色和蓝色(RGB)成分,必须在
0和COLORS之间。返回一个3元组,包含给定颜色的R,G,B值,它们介于0(无分量)和1000(最大分量)之间.
curses.color_pair(color_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.getwin(file)- 通过较早的
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的值必须是
1和255之间的数字。使用nocbreak()离开半延迟模式.
curses.init_color(color_number, r, g, b)- 改变颜色的定义,将要改变的颜色数量跟随三个RGB值(对于一定量的红色,绿色和蓝色组分)。color_number的值必须在
0和COLORS之间。每个r, g, b,必须是0和1000之间的值。使用init_color()时,屏幕上所有出现的颜色都会立即更改为新定义。该功能是一个无操作的终端;只有当can_change_color()返回True.
curses.init_pair(pair_number, fg, bg)时才会激活- 更改颜色对的定义。它需要三个参数:要更改的颜色对的数量,前景颜色编号和背景颜色编号。pair_number的值必须介于
1和COLOR_PAIRS - 1之间(0颜色对在黑色上连接为白色并且无法更改)。fg和bg参数的值必须在0和COLORS。如果先前已初始化颜色对,则刷新屏幕并将所有出现的颜色对更改为newdefinition.
curses.initscr()- 初始化库。返回窗口对象代表整个屏幕.
注意
如果打开终端有错误,底层的curses库可能会导致翻译退出.
curses.is_term_resized(nlines, ncols)- 返回
True如果resize_term()会修改窗口结构,False否则
curses.isendwin// ()- 返回
True如果endwin()被调用(也就是说,curses库已被取消初始化).
curses.keyname(k)- 返回编号为的密钥的名称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.mouseinterval(interval)- 设置按下和释放事件之间可以经过的最长时间(以毫秒为单位),以便将它们识别为单击,并返回上一个间隔值。默认值为200毫秒,或五分之一秒.
curses.mousemask(mousemask)- 设置要报告的鼠标事件,并返回一个元组
(availmask,oldmask). availmask指示可以报告哪些指定的鼠标事件;在完全失败时返回0. oldmask是给定窗口的鼠标事件掩码的先前值。如果从未调用此函数,则不会报告任何鼠标事件.
curses.napms(ms)- 睡觉ms毫秒.
curses.newpad(nlines, ncols)- 创建并返回指向具有给定行数和列数的新填充数据结构的指针。将垫子作为窗口对象返回.
垫子就像一个窗口,除了它不受屏幕尺寸的限制,并且不一定与屏幕的特定部分相关联。当需要大窗口时,可以使用垫,并且窗口的一部分一次只能在屏幕上。不会发生垫的自动刷新(例如来自滚动输入的输出)。垫的
refresh()和noutrefresh()方法需要6个参数来指定要显示的打击垫部分以及屏幕上用于显示的位置。这些争论是pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol;p参数指的是要显示的打击垫区域的左上角,s参数定义了一个裁剪框,在该屏幕上将显示打击垫区域.
curses.newwin(nlines, ncols)curses.newwin(nlines, 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,QUIT和SUSP字符关联的输入和输出队列将没有做。你可能想打电话noqiflush()在一个信号处理程序中如果你想输出tocontinue就好像没有发生中断,在处理程序退出后
curses.noraw// ( )- 离开原始模式。用线缓冲恢复正常的“煮熟”模式.
curses.pair_content(pair_number)- 返回包含所要求颜色对颜色的元组
(fg, bg)。pair_number的值必须在1和COLOR_PAIRS - 1.
curses.putp(str)- 相当于
tputs(str, 1, putchar);为当前终端发出指定的minminfo功能的值。请注意,putp()的输出始终为标准输出.
curses.qiflush( [flag])- 如果flag是
False,效果与调用noqiflush()相同。如果flag是True,或者没有提供参数,那么当读取控制字符时队列将被刷新.
curses.raw( )- 进入原始模式。在原始模式下,正常行缓冲和中断,退出,挂起和流量控制键的处理被关闭;字符用于逐个诅咒输入功能.
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()函数尝试调整allwindows的大小。然而,由于垫的调用惯例,如果没有与应用程序的额外交互,就不可能调整它们的大小.
curses.resizeterm(nlines, ncols)- 重新调整标准和当前窗口指定的尺寸,并调整curses库使用的记录窗口尺寸的其他簿记数据(特别是SIGWINCH处理程序).
curses.savetty()- 保存当前状态缓冲区中的终端模式,可用于
resetty().
curses.setsyx(y, x)- 将虚拟屏幕光标设置为y, x。如果y和x都是
-1,则leaveok设置True.
curses.setupterm(term=None, fd=-1)- 初始化终端。term是一个给出终端名称的字符串,或
None;如果省略或None,将使用TERM环境变量的值。fd是将发送任何初始化序列的文件描述符;如果不提供或-1,将使用sys.stdout的文件描述符.
curses.start_color()- 如果程序员必须调用想要使用颜色,并且在调用任何其他颜色操作例程之前。最好在
initscr().start_color()初始化八种基本颜色(黑色,红色,绿色,黄色,蓝色,洋红色,青色和白色)和curses中的两个全局变量之后调用此例程。module,COLORS和COLOR_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()- 更新
LINES和COLS。用于检测手动屏幕调整大小版本3.5中的新功能
curses.unget_wch(ch)- 推 ch所以下一个
get_wch()将它归还.注意
只有一个 ch可以在
get_wch()被叫.新版本3.3.
curses.ungetmouse(id, x, y, z, bstate)- 将
KEY_MOUSE事件推入输入队列,关联给它的给定数据.
curses.use_env(flag )- 如果使用,应在
initscr()或称为新时期。什么时候 flag是False,即使环境变量LINES和COLUMNS(默认情况下使用)已设置,或者如果curses在awindow中运行(在这种情况下默认行为是使用窗口大小,如果没有设置LINES和COLUMNS).
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.addch(ch [, attr] )window.addch(y, x, ch [, attr] )- 画字ch at
(y, x)with attributes attr,覆盖在该位置的任何字符以前的画家。默认情况下,字符位置和属性是窗口对象的当前设置.注意
在窗外,子窗口或垫子外面写一个
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。在打印字符串后,尝试写入窗口,子窗口或打击垫的右下角会引发异常.
window.attroff(attr )- 从应用于当前窗口的所有写入的“背景”设置中删除属性attr.
window.attron(attr)- 添加属性attr从“背景”设置应用于当前窗口的所有写入.
window.attrset(attr)- 将“背景”属性集设置为attr。这套最初是
0(没有属性).
window.bkgd(ch [, 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_VLINErs 右侧 ACS_VLINEts 顶部 ACS_HLINEbs 底部 ACS_HLINEtl 左上角 ACS_ULCORNERtr 上部右角 ACS_URCORNERbl 左下角 ACS_LLCORNERbr 右下角 ACS_LRCORNER
window.box( [vertch, horch] )- 类似于
border(),但ls和rs都是vertch和ts和bs 是 horch。此功能始终使用默认的角落字符.
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)- 如果flag是
True,接下来打电话给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_y和begin_x是相对于窗口的原点,而不是相对于整个屏幕。为派生窗口返回一个窗口对象.
window.echochar(ch [, attr])- 添加字符ch用属性attr,并立即在窗口上调用
refresh().
window.enclose(y, x)- 测试给定窗口是否关闭给定的一对屏幕相对字符单元格坐标,返回
True或False。它可用于确定屏幕窗口的哪个子集包含鼠标事件的位置.
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.getstr(n)window.getstr(y, x)window.getstr(y, x, n)- 从用户那里读取一个字节对象,具有原始行编辑能力.
window.getyx()- 返回一个元组
(y, x)当前光标位置相对于窗口的左上角.
window.hline(ch, n )window.hline(y, x, ch, n )- 显示水平线从
(y, x)开始,长度n由字符组成ch.
window.idcok(flag)- 如果flag是
False,curses不再考虑使用终端的硬件插入/删除字符功能;如果flag是True,则启用字符插入和删除。首次初始化curses时,默认启用characterinsert / delete使用.
window.idlok(flag)- 如果flag是
True,curses将尝试使用硬件线路设施。否则,线路插入/删除被禁用.
window.immedok(flag)- 如果flag是
True,窗口图像有任何变化自动使窗口刷新;你不再需要自己打电话refresh()。但是,由于反复调用towrefresh,它可能会大大降低性能。默认情况下禁用此选项.
window.inch( [y, x])- 返回窗口中给定位置的字符。底部8位是正确的字符,高位是属性.
window.insch(ch [, attr] )window.insch(y, 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.insstr(str [, attr] )window.insstr(y, x, str [, attr] )- 在光标下的字符前插入一个字符串(符合该行的字符数)。光标右侧的所有字符都向右移动,线上最右边的字符丢失。光标位置不变(移动到y, x后,如果指定).
window.instr( [n] )window.instr(y, x [, n] )- 返回一个字节对象,从当前光标位置开始从窗口中提取,或者在y, x如果指定的话。属性从字符中剥离。如果指定n,
instr()返回一个字符串,大多数n字符长(不包括尾随NUL).
window.is_linetouched(line)- 返回
True如果指定的行自上次调用refresh()后被修改;否则返回False。如果curses.error对于给定的窗口无效,则提出line异常.
window.is_wintouched()- 返回
True如果指定的窗口自上次调用refresh()后被修改;否则返回False.
window.keypad(flag)- 如果flag是
True,某些键(键盘,功能键)生成的转义序列将由解释curses。如果flag是False,转义序列将在输入流中完成.
window.leaveok(flag)- 如果flag是
True,光标位于更新位置,而不是“光标位置”。这会尽可能减少光标的移动。如果可能的话,光标会变得不可见.如果flag是
False更新后光标将始终处于“光标位置”。
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)- 如果flag是
True,getch()将是无阻塞的
window.notimeout(flag)- 如果flag是
True,转义序列不会超时.如果flag是
False,几毫秒后,转义序列将不会被解释,并将保留在输入流中原样
window.noutrefresh()- 标记为刷新但等待。此功能更新表示窗口所需状态的数据结构,但不强制更新物理屏幕。要做到这一点,请致电
doupdate().
window.overlay(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol] )- 覆盖destwin。窗口不需要大小相同,只复制重叠区域。此副本是非破坏性的,这意味着当前背景字符不会覆盖destwin.
的旧内容。为了对复制的区域进行细粒度控制,可以使用
overlay()的第二种形式。sminrow和smincol是源窗口的左上方坐标,其他变量在目标窗口中标记一个矩形.
window.overwrite(destwin [, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol] )- 覆盖destwin顶部的窗口。窗口不需要是相同的大小,在这种情况下只复制重叠区域。此副本具有破坏性,这意味着当前背景字符会覆盖destwin.
的旧内容。要对复制的区域进行细粒度控制,可以使用
overwrite()的第二种形式。sminrow和smincol是源窗口的左上角坐标,其他变量在目标窗口标记一个矩形.
window.putwin(file)- 上面的窗口将与窗口关联的所有数据写入提供的文件对象。以后可以使用
getwin()功能
window.redrawln(beg, num)- 表示num屏线,从行开始beg,是腐败的,应该在下一个完全重绘
refresh()呼叫。
window.redrawwin()- 触摸整个窗口,使其在下一个
refresh()来电时完全重绘
window.refresh( [pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol])- 立即更新显示(使用先前绘制/删除方法同步实际屏幕).
当窗口是用
newpad()。需要额外的参数来指示垫和屏幕的哪个部分。pminrow和pmincol指定要在打击垫中显示的矩形的左上角。sminrow,smincol, smaxrow,和smaxcol指定要在屏幕上显示的矩形边缘。在屏幕坐标中显示的矩形的右下角是根据屏幕坐标计算的,因为它们的大小必须相同。两个矩形必须完全包含在它们各自的结构中。负值pminrow, pmincol,sminrow,或smincol被视为零.
window.resize(nlines, ncols )- 为curses窗口重新分配存储,以将其维度调整为指定的值。如果任一维度大于当前值,则窗口的数据将填充具有当前背景的空白(由
bkgdset()合并到它们中
window.scroll( [lines=1])- 滚动屏幕或向上滚动区域lines lines.
window.scrollok(flag)- 控制当窗口的光标移动到窗口或滚动区域的边缘时发生的情况,或者是由于底线上的换行操作,或者键入最后一行的最后一个字符。如果flag是
False,光标留在底线。如果flag是True,窗口向上滚动一行。注意,为了在终端上获得物理滚动效果,还需要调用idlok().
window.setscrreg(top, bottom)- 从行top到线 bottom。所有滚动操作都将在此区域进行.
window.standend()- 关闭杰出的属性。在某些终端上,这会产生所有属性的副作用.
window.standout()- 打开属性A_STANDOUT.
window.subpad(begin_y, begin_x)window.subpad(nlines, ncols, begin_y, begin_x)- 返回一个子窗口,其左上角位于
(begin_y, begin_x),其宽度/高度为ncols/nlines.
window.subwin(begin_y, begin_x)window.subwin(nlines, ncols, begin_y, begin_x)- 返回一个子窗口,其左上角位于
(begin_y, begin_x),其宽度/高度为ncols/nlines.默认情况下,子窗口将从指定位置延伸到窗口的右下角.
window.syncdown( )- 触摸窗口中已触及其任何祖先窗口的每个位置。这个例程由
refresh()调用,所以几乎不需要手动调用它.
window.syncok(flag)- 如果flag是
True, 然后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.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- 表示模块当前版本的字节对象。也可以作为
__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_LEFT和KEY_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.rectangle(win, uly, ulx, lry, lrx)- 画一个矩形。第一个参数必须是一个窗口对象;剩下的参数是相对于该窗口的坐标。第二和第三个参数是要绘制的三角形的左上角的y和x坐标;第四和第五个参数是右下角的y和x坐标。矩形将使用VB100 / IBM PC在终端上绘制字符,使这成为可能(包括xterm和大多数其他软件终端仿真器)。否则它将用ASCII破折号,垂直条和加号绘制.
文本框对象
您可以按如下方式实例化Textbox对象:
- class
curses.textpad.Textbox(win) - 返回一个文本框小部件对象。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_RIGHTControl-F KEY_UPControl-P KEY_DOWNControl-N KEY_BACKSPACEControl-h 所有其他击键被视为插入给定字符和移动的命令对(用换行).
gather()- 将窗口内容作为字符串返回;是否包含窗口中的空白是否受
stripspacesmember.
stripspaces- 的影响。该属性是一个控制窗口中空白解释的标志。当它打开时,每行的尾随空白被忽略;将光标落在尾随空白上的任意光标移动会转移到该行的末端,并且当窗口内容被收集时,尾随空白被剥离.