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库函数返回错误时引发异常。
注解
无论何时 x 或 y 函数或方法的参数是可选的,它们默认为当前光标位置。无论何时 attr 是可选的,默认为 A_NORMAL
.
模块 curses
定义以下函数:
- curses.baudrate()¶
返回终端的输出速度(位/秒)。在软件终端模拟器上,它将具有固定的高值。由于历史原因而包括在内;在以前,它被用来为时间延迟编写输出循环,有时还根据线速度更改接口。
- curses.beep()¶
发出短暂的注意声。
- curses.can_change_color()¶
返回
True
或False
,取决于程序员是否可以更改终端显示的颜色。
- curses.cbreak()¶
进入cbreak模式。在cbreak模式(有时称为“稀有”模式)下,正常的tty行缓冲被关闭,可以逐个读取字符。但是,与原始模式不同,特殊字符(中断、退出、挂起和流控制)保留它们对TTY驱动程序和调用程序的影响。先调用
raw()
然后cbreak()
使终端处于CBreak模式。
- curses.color_content(color_number)¶
返回颜色中红、绿、蓝(RGB)分量的强度 color_number ,它必须介于
0
和COLORS - 1
。返回一个三元组,包含给定颜色的R、G、B值,它将介于0
(无组件)和1000
(组件的最大数量)。
- curses.color_pair(pair_number)¶
返回用于以指定颜色对显示文本的属性值。仅支持前256个颜色对。此属性值可以与
A_STANDOUT
,A_REVERSE
,和另一个A_*
属性。pair_number()
是此函数的对应函数。
- curses.curs_set(visibility)¶
设置光标状态。 能见度 可以设置为
0
,1
或2
,表示不可见、正常或非常可见。如果终端支持请求的可见性,则返回上一个光标状态;否则引发异常。在许多终端上,“可见”模式是下划线光标,“非常可见”模式是块光标。
- 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
;能力clear
,cup
,cud
,cud1
,cuu1
,cuu
,vpa
残疾人;以及home
字符串被设置为cr
.其效果是光标仅限于当前行,屏幕更新也是如此。这可用于在不接触屏幕其余部分的情况下启用字符一次行编辑。
- curses.flushinp()¶
刷新所有输入缓冲区。这将丢弃用户键入但程序尚未处理的任何提前输入。
- curses.getmouse()¶
之后
getch()
退货KEY_MOUSE
若要发出鼠标事件信号,应调用此方法来检索排队的鼠标事件,表示为5元组(id, x, y, z, bstate)
。 id 是用于区分多个设备的ID值,并且 x , y , z 是事件的坐标。( z 当前未使用。) bstate 是一个整数值,其位将被设置以指示事件类型,并且将是以下一个或多个常量的按位OR,其中 n 是从1到5的按键数字:BUTTONn_PRESSED
,BUTTONn_RELEASED
,BUTTONn_CLICKED
,BUTTONn_DOUBLE_CLICKED
,BUTTONn_TRIPLE_CLICKED
,BUTTON_SHIFT
,BUTTON_CTRL
,BUTTON_ALT
。在 3.10 版更改: 这个
BUTTON5_*
如果常量是由底层的curses库提供的,那么它们现在是公开的。
- 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模式,因为用户键入的字符可立即用于程序。但是,在封锁后 十分之一 十分之一秒,如果未键入任何内容,则引发异常。价值 十分之一 必须是介于
1
和255
. 使用nocbreak()
离开半延迟模式。
- curses.init_color(color_number, r, g, b)¶
更改颜色的定义,采用要更改的颜色编号,后跟三个RGB值(表示红色、绿色和蓝色分量的量)。的价值 color_number 必须介于
0
和 COLORS - 1 。每一个 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 - 1
,或者,在调用use_default_colors()
,-1
。如果颜色对先前已初始化,则屏幕将刷新,并且该颜色对的所有匹配项都将更改为新定义。
- curses.is_term_resized(nlines, ncols)¶
返回
True
如果resize_term()
会修改窗口结构,False
否则。
- curses.keyname(k)¶
返回编号的密钥的名称 k 作为字节对象。生成可打印ASCII字符的密钥的名称是密钥的字符。控制键组合的名称是由插入符号组成的双字节字节对象 (
b'^'
)然后是相应的可打印的ASCII字符。alt-key组合的名称(128-255)是一个由前缀组成的bytes对象。b'M-'
后跟相应的ASCII字符的名称。
- curses.killchar()¶
以单字节字节对象的形式返回用户的当前行终止字符。在Unix操作系统下,这是curses程序控制tty的一个属性,而不是由curses库本身设置的。
- curses.meta(flag)¶
如果 flag 是
True
,允许输入8位字符。如果 flag 是False
,仅允许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()
使用常规程序,正常刷新与INTR
,QUIT
和SUSP
字符将无法完成。你可能想调用noqiflush()
在信号处理程序中,如果希望在处理程序退出后继续输出,就像没有发生中断一样。
- curses.noraw()¶
离开原始模式。恢复正常的“煮熟”模式和线路缓冲。
- curses.pair_content(pair_number)¶
返回元组
(fg, bg)
包含请求的颜色对的颜色。的价值 pair_number 必须介于0
和COLOR_PAIRS - 1
。
- curses.pair_number(attr)¶
返回由属性值设置的颜色对的数目 attr .
color_pair()
是这个功能的对应物。
- curses.qiflush([flag])¶
如果 flag 是
False
,效果与调用相同noqiflush()
.如果 flag 是True
或者不提供参数,则在读取这些控制字符时将刷新队列。
- curses.raw()¶
进入原始模式。在原始模式下,正常的线路缓冲和中断、退出、暂停和流控制键的处理被关闭;字符被一个接一个地表示为对输入函数的curses。
- curses.reset_prog_mode()¶
将终端恢复到“程序”模式,如之前保存的
def_prog_mode()
.
- curses.reset_shell_mode()¶
将终端恢复到“shell”模式,如之前保存的
def_shell_mode()
.
- curses.resize_term(nlines, ncols)¶
后端功能由使用
resizeterm()
,执行大部分工作;调整窗口大小时,resize_term()
空白填充扩展的区域。调用应用程序应该用适当的数据填充这些区域。这个resize_term()
函数尝试调整所有窗口的大小。但是,由于pad的调用约定,如果不与应用程序进行额外的交互,就无法调整这些pad的大小。
- curses.resizeterm(nlines, ncols)¶
将标准窗口和当前窗口调整为指定的尺寸,并调整记录窗口尺寸的Curses库(尤其是SigWinch处理程序)使用的其他簿记数据。
- 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.setupterm(term=None, fd=- 1)¶
初始化终端。 term 是提供终端名称的字符串,或
None
如果省略或None
,的值TERM
将使用环境变量。 fd 是任何初始化序列将发送到的文件描述符;如果未提供或-1
,的文件描述符sys.stdout
将被使用。
- curses.start_color()¶
如果程序员想使用颜色,必须在调用任何其他颜色操作例程之前调用。很好的做法是在
initscr()
.start_color()
初始化中的八种基本颜色(黑色、红色、绿色、黄色、蓝色、洋红、青色和白色)和两个全局变量curses
模块,COLORS
和COLOR_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.update_lines_cols()¶
更新
LINES
和COLS
.用于检测手动调整屏幕大小。3.5 新版功能.
- curses.ungetmouse(id, x, y, z, bstate)¶
推A
KEY_MOUSE
事件,将给定的状态数据与其关联。
- curses.use_env(flag)¶
如果使用此函数,则应在
initscr()
或者称为新术语。什么时候? flag 是False
,将使用terminfo数据库中指定的行和列的值,即使环境变量LINES
和COLUMNS
(默认使用)被设置,或者如果curses正在窗口中运行(在这种情况下,默认行为将使用窗口大小,如果LINES
和COLUMNS
未设置)。
- curses.use_default_colors()¶
允许在支持此功能的终端上使用颜色的默认值。使用它可以支持应用程序中的透明度。将默认颜色指定给颜色编号
-1
. 调用此函数后,init_pair(x, curses.COLOR_RED, -1)
初始化,例如,颜色对 x 默认背景上的红色前景色。
- curses.wrapper(func, /, *args, **kwargs)¶
初始化curses并调用另一个可调用对象, func 这应该是您使用应用程序的其他curses。如果应用程序引发异常,此函数将在重新引发异常并生成回溯之前将终端恢复到正常状态。可调用对象 func 然后将主窗口“stdscr”作为其第一个参数传递,后跟传递给
wrapper()
. 调用之前 func ,wrapper()
打开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.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.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.enclose(y, x)¶
测试给定的一对屏幕相对字符单元格坐标是否被给定的窗口包围,返回
True
或False
.它可用于确定屏幕窗口的哪些子集包含鼠标事件的位置。
- 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)¶
如果 flag 是
False
,curses不再考虑使用终端的硬件插入/删除字符功能;如果 flag 是True
,启用字符插入和删除。首次初始化curses时,默认情况下启用字符插入/删除。
- window.immedok(flag)¶
如果 flag 是
True
窗口图像中的任何更改都会自动刷新窗口;您不再需要调用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 为零或负数,将插入整个字符串。光标右侧的所有字符都右移,行中最右侧的字符将丢失。光标位置不变(移动到 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.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.notimeout(flag)¶
如果 flag 是
True
,转义序列不会超时。如果 flag 是
False
,几毫秒后,转义序列将不会被解释,并将保留在输入流中。
- window.noutrefresh()¶
标记为刷新,但请稍候。此函数更新表示窗口所需状态的数据结构,但不强制更新物理屏幕。为此,请致电
doupdate()
.
- window.overlay(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol])¶
将窗口覆盖在 德斯文 . 窗口大小不必相同,只复制重叠区域。此副本是非破坏性的,这意味着当前背景字符不会覆盖 德斯文 .
为了对复制的区域进行细粒度控制,第二种形式的
overlay()
可以使用。 斯米罗 和 斯米科尔 是源窗口的左上角坐标,其他变量在目标窗口中标记一个矩形。
- window.overwrite(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol])¶
覆盖窗口顶部 德斯文 . 窗口的大小不必相同,在这种情况下,只复制重叠区域。此副本具有破坏性,这意味着当前背景字符将覆盖 德斯文 .
为了对复制的区域进行细粒度控制,第二种形式的
overwrite()
可以使用。 斯米罗 和 斯米科尔 是源窗口的左上角坐标,其他变量在目标窗口中标记一个矩形。
- window.refresh([pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol])¶
立即更新显示(将实际屏幕与以前的绘图/删除方法同步)。
6个可选参数只能在窗口是用创建的PAD时指定。
newpad()
. 需要额外的参数来指示所涉及的焊盘和屏幕的哪个部分。 普米罗 和 普米科尔 指定要在填充中显示的矩形的左上角。 斯米罗 , 斯米科尔 , 斯马克罗 和 斯马科尔 指定要在屏幕上显示的矩形的边缘。由于矩形的大小必须相同,因此要在填充板中显示的矩形的右下角是根据屏幕坐标计算的。两个矩形必须完全包含在各自的结构中。的负值 普米罗 , 普米科尔 , 斯米罗 或 斯米科尔 被视为零。
- window.resize(nlines, ncols)¶
重新分配Curses窗口的存储空间,以将其维度调整为指定的值。如果任何一个维度大于当前值,则窗口的数据将填充具有当前背景格式副本的空白(由设置
bkgdset()
)融入其中。
- window.scroll([lines=1])¶
向上滚动屏幕或滚动区域 线 线。
- window.scrollok(flag)¶
控制当窗口的光标移离窗口边缘或滚动区域时发生的情况,无论是由于底线上的换行操作,还是键入最后一行的最后一个字符。如果 flag 是
False
,光标留在底线上。如果 flag 是True
,窗口向上滚动一行。请注意,为了在终端上获得物理滚动效果,还需要调用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.syncup()¶
触摸已在窗口中更改的窗口祖先中的所有位置。
- window.timeout(delay)¶
设置窗口的阻塞或非阻塞读取行为。如果 延迟 为负,使用阻塞读取(将无限期等待输入)。如果 延迟 为零,则使用非阻塞读取,并且
getch()
将返回-1
如果没有输入等待。如果 延迟 是肯定的,那么getch()
将阻止 延迟 毫秒,然后返回-1
如果在该时间结束时仍然没有输入。
- window.touchline(start, count[, changed])¶
假装 计数 行已更改,从行开始 开始 . 如果 改变 它指定受影响的行是否标记为已更改。( 改变
=True
)或不变( 改变=False
)
- window.touchwin()¶
假设整个窗口已更改,以便进行绘图优化。
- window.vline(ch, n)¶
- window.vline(y, x, ch, n)
显示从开始的垂直线
(y, x)
有长度 n 由角色组成 ch .
常量¶
这个 curses
模块定义以下数据成员:
- curses.version¶
表示模块当前版本的bytes对象。也可作为
__version__
.
- curses.ncurses_version¶
包含ncurses库版本的三个组件的命名元组: 专业 , 少数的 和 补丁 . 所有值都是整数。组件也可以按名称访问,因此
curses.ncurses_version[0]
等于curses.ncurses_version.major
等等。可用性:如果使用了ncurses库。
3.8 新版功能.
有些常量可用于指定字符单元属性。可用的确切常数取决于系统。
属性 |
意义 |
---|---|
|
交替字符集模式 |
|
闪烁模式 |
|
粗体模式 |
|
调暗模式 |
|
不可见或空白模式 |
|
斜体模式 |
|
正常属性 |
|
保护模式 |
|
反转背景色和前景色 |
|
突出模式 |
|
下划线模式 |
|
水平突出显示 |
|
左高亮 |
|
低光照 |
|
右高亮 |
|
顶部突出显示 |
|
垂直突出显示 |
|
提取字符的位掩码 |
3.7 新版功能: A_ITALIC
加入。
有几个常量可用于提取某些方法返回的相应属性。
位掩码 |
意义 |
---|---|
|
提取属性的位掩码 |
|
提取字符的位掩码 |
|
用于提取颜色对字段信息的位掩码 |
键由名称以开头的整数常量引用 KEY_
. 可用的确切键帽取决于系统。
密钥常数 |
键 |
---|---|
|
最小键值 |
|
断开键(不可靠) |
|
向下箭头 |
|
向上箭头 |
|
左箭头 |
|
右箭头 |
|
主页键(向上+左箭头) |
|
退格(不可靠) |
|
功能键。最多支持64个功能键。 |
|
功能键值 n |
|
删除行 |
|
插入行 |
|
删除字符 |
|
插入字符或进入插入模式 |
|
退出插入字符模式 |
|
清除屏幕 |
|
清除到屏幕末端 |
|
清除到行尾 |
|
向前滚动1行 |
|
向后滚动1行(后退) |
|
下一页 |
|
前一页 |
|
设置选项卡 |
|
清除标签 |
|
清除所有选项卡 |
|
输入或发送(不可靠) |
|
软(部分)复位(不可靠) |
|
重置或硬重置(不可靠) |
|
打印 |
|
Home Down或Bottom(左下) |
|
键盘左上角 |
|
键盘右上角 |
|
键盘中心 |
|
键盘左下角 |
|
键盘右下角 |
|
后标签 |
|
乞求(开始) |
|
取消 |
|
关闭 |
|
命令(命令) |
|
拷贝 |
|
创造 |
|
终点 |
|
出口 |
|
发现 |
|
帮助 |
|
作记号 |
|
消息 |
|
移动 |
|
接下来 |
|
正常开放 |
|
选项 |
|
前(前) |
|
重做 |
|
参考文献(参考文献) |
|
刷新 |
|
替换 |
|
重新启动 |
|
简历 |
|
保存 |
|
移位求(开始) |
|
移位取消 |
|
移位命令 |
|
移位拷贝 |
|
移位创建 |
|
移位删除字符 |
|
移位删除行 |
|
选择 |
|
移动端 |
|
移位清除线 |
|
换位出口 |
|
移位查找 |
|
转移帮助 |
|
搬家 |
|
移位输入 |
|
左移箭头 |
|
移位消息 |
|
移位移动 |
|
下一步 |
|
移位选项 |
|
移位前置 |
|
移印 |
|
移位重做 |
|
移位替换 |
|
右移箭头 |
|
转移简历 |
|
移位保存 |
|
移位挂起 |
|
移位撤销 |
|
暂停 |
|
撤消 |
|
鼠标事件已发生 |
|
终端调整大小事件 |
|
最大键值 |
在VT100及其软件仿真(如X终端仿真器)上,通常至少有四个功能键 (KEY_F1
, KEY_F2
, KEY_F3
, KEY_F4
)可用,箭头键映射到 KEY_UP
, KEY_DOWN
, KEY_LEFT
和 KEY_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码 |
意义 |
---|---|
|
右上角的替代名称 |
|
实心方形块 |
|
广场委员会 |
|
横线的替换名称 |
|
左上角的替换名称 |
|
Top T恤的备用名称 |
|
下三通 |
|
子弹 |
|
棋盘(点画) |
|
向下箭头 |
|
度数符号 |
|
钻石 |
|
大于或等于 |
|
水平线 |
|
灯笼符号 |
|
左箭头 |
|
小于或等于 |
|
左下角 |
|
右下角 |
|
左三通 |
|
不等号 |
|
字母PI |
|
正负号 |
|
大加号 |
|
右箭头 |
|
右三通 |
|
扫描线1 |
|
扫描线3 |
|
扫描线7 |
|
扫描线9 |
|
右下角的替代名称 |
|
竖线的替换名称 |
|
右T恤的替代名称 |
|
左下角的替换名称 |
|
底部三通的替代名称 |
|
左T恤的替代名称 |
|
交叉或Big Plus的备用名称 |
|
英镑 |
|
上三通 |
|
向上箭头 |
|
左上角 |
|
右上角 |
|
垂线 |
下表列出了预定义的颜色:
常数 |
颜色 |
---|---|
|
黑色 |
|
蓝色 |
|
青色(浅绿色蓝色) |
|
绿色 |
|
洋红(紫红色) |
|
红色 |
|
白色 |
|
黄色的 |
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¶
此属性是控制窗口中空白的解释的标志。如果启用,则忽略每行的尾随空格;将光标放在尾随空格上的任何光标移动都将转到该行的末尾,而当收集窗口内容时,尾随空格将被剥离。