16.10. curses
- 字符单元显示的终端处理¶
curses
模块为curses库提供了一个接口,这是便携式高级终端处理的事实标准。
而vurses最广泛应用在 Unix 环境中,版本以供 Windows、 DOS以及其他系统。此扩展模块用于匹配的 ncurses API,开源 curses 库托管在 Linux 和 BSD Unix 变种。
注意
从版本5.4起,ncurses库决定如何使用nl_langinfo
函数解释非ASCII数据。这意味着您必须在应用程序中调用locale.setlocale()
,并使用系统的可用编码之一对Unicode字符串进行编码。此示例使用系统的默认编码:
import locale
locale.setlocale(locale.LC_ALL, '')
code = locale.getpreferredencoding()
然后使用代码作为str.encode()
调用的编码。
也可以看看
- 模块
curses.ascii
- 用于使用ASCII字符的实用程序,无论您的区域设置如何。
- 模块
curses.panel
- 一个面板堆栈扩展,增加了深度来诅咒窗口。
- 模块
curses.textpad
- 支持Emacs类似绑定的curses的可编辑文本小部件。
- Curses Programming with Python
- 教程材料关于使用curses与Python,由Andrew Kuchling和Eric Raymond。
Python源代码分发中的Tools / demo /目录包含一些使用此模块提供的curses绑定的示例程序。
16.10.1. Functions¶
这个模块 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 模式 (有时称为"rare"模式) 正常 tty 线缓冲关闭和字符都是可供读取一个接一个。然而,不同于raw模式,特殊字符 (中断、 退出、 暂停和流控制) 保留他们对 tty 驱动程序和调用程序的影响。调用
raw()
然后cbreak()
离开终端进入cbreak模式。
-
curses.
color_content
(color_number)¶ 返回一组红绿蓝RGB的颜色强度分量color_number,其值要介于
0
和COLORS
.返回一个 3 元组,则包含 R、 G、 B 值的给定的颜色, 其值在0
(no component) 和1000
(maximum amount of component).
-
curses.
color_pair
(color_number)¶ 返回在指定的颜色显示文本的属性值。此属性可以跟
A_STANDOUT
,A_REVERSE
, 和其他A_*
组合.pair_number()
是此函数的对应。
-
curses.
curs_set
(visibility)¶ 设置光标的状态。visibility(可见性) 可以设置为 0, 1, or 2, for不可见,普通的, 或者非常明显.如果终端支持的可见性要求,则返回以前的游标状态;否则,则引发异常。许多终端,"可见"模式是下划线光标和"非常明显"模式是一个块游标。
-
curses.
def_prog_mode
()¶ 作为"程序"模式,模式正在运行的程序使用curss时保存当前的终端模式。(对应的是shell模式,当该程序不是用的curses)后续调用
reset_prog_mode()
会还原这个模式。
-
curses.
def_shell_mode
()¶ 作为"shell"模式,模式正在运行的程序不使用curses时保存当前的终端模式。(对应的是"程序"模式中,当程序正在使用curses能力.)后续调用
reset_shell_mode()
将还原这个模式.
-
curses.
delay_output
(ms)¶ 插入一个 ms 毫秒的暂停再输出上。
-
curses.
doupdate
()¶ 更新物理屏幕。Curses 库保持两种数据结构,一个代表当前的物理屏幕内容和表示所需的下一个状态的虚拟屏幕。这个
doupdate()
范围性更新物理屏幕匹配虚拟屏幕。虚拟屏幕可能会在用
addstr()
对window做了相关操作后,使用noutrefresh()
调用后有所更新。正常的refresh()
调用只是noutrefresh()
,后面是doupdate()
;如果您必须更新多个窗口,您可以通过在所有窗口上发出noutrefresh()
调用,然后单击doupdate()
来提高性能,并减少屏幕闪烁。
-
curses.
echo
()¶ 进入echo模型。在echo 模式,每个字符的输入都会显示在屏幕上。
-
curses.
endwin
()¶ 取消初始化库,和终端回到正常状态。
-
curses.
erasechar
()¶ 返回用户当前的擦除字符。在Unix操作系统下,这是curses程序的控制tty的属性,并且不是由curses库本身设置的。
-
curses.
filter
()¶ 如果使用
filter()
例程,则必须在调用initscr()
之前调用。效果是,在这些调用期间,LINES
设置为1;能力清除,杯,cud,cud1,cuu1,cuu,vpa被禁用;并且归属字符串被设置为cr的值。效果是光标限制在当前行,屏幕更新也是如此。这可以用于在不触摸屏幕的其余部分的情况下实现一次一行的字符编辑。
-
curses.
flushinp
()¶ 清除所有输入缓冲区。这将抛弃由用户输入并且尚未被程序处理的任何字体。
-
curses.
getmouse
()¶ 在
getch()
返回KEY_MOUSE
以表示鼠标事件后,应调用此方法检索排队的鼠标事件,表示为5元组(id, x, y, z, bstate)
。id是用于区分多个设备的ID值,x,y,z是事件的坐标。(z当前未使用。)bstate is an integer value whose bits will be set to indicate the type of event, and will be the bitwise OR of one or more of the following constants, where n is the button number from 1 to 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模式,用户键入的字符可立即用于程序。但是,在阻塞十分之一十分之几秒后,如果没有键入任何内容,则会引发异常。十进制的值必须是
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()
返回1
时,它才处于活动状态。
-
curses.
init_pair
(pair_number, fg, bg)¶ 更改颜色对的定义。它需要三个参数:要更改的颜色对的编号,前景颜色编号和背景颜色编号。pair_number的值必须在
1
和COLOR_PAIRS - 1
(0
颜色对在黑色处接线为白色,无法更改)。fg和bg参数的值必须在0
和COLORS
之间。如果颜色对先前已初始化,则屏幕被刷新,并且该颜色对的所有出现被改变为新的定义。
-
curses.
initscr
()¶ 初始化库。返回一个代表整个屏幕的
WindowObject
。注意
如果打开终端时出错,底层curses库可能会导致解释器退出。
-
curses.
is_term_resized
(nlines, ncols)¶ 如果
resize_term()
会修改窗口结构,则返回True
,否则返回False
。
-
curses.
keyname
(k)¶ 返回编号为k的密钥的名称。生成可打印ASCII字符的键的名称是键的字符。控制 - 键组合的名称是一个双字符字符串,包含一个插入符号,后跟相应的可打印ASCII字符。alt-key组合(128-255)的名称是由前缀“M-”后跟相应ASCII字符的名称组成的字符串。
-
curses.
killchar
()¶ 返回用户当前行杀死字符。在Unix操作系统下,这是curses程序的控制tty的属性,并且不是由curses库本身设置的。
-
curses.
meta
(yes)¶ 如果yes为1,则允许输入8位字符。如果yes为0,则只允许7位字符。
-
curses.
mouseinterval
(interval)¶ 设置在按压和释放事件之间可以经过的最大时间(以毫秒为单位),以便将它们识别为点击,并返回上一个间隔值。默认值为200毫秒,或1/5秒。
-
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 t5 >,begin_x )返回其左上角在
(begin_y, begin_x)
的新窗口,其高度/宽度为nlines / ncols。默认情况下,窗口将从指定位置延伸到屏幕的右下角。
-
curses.
nl
()¶ 输入换行模式。此模式将返回键转换为输入上的换行符,并将换行符转换为返回和换行符。换行模式最初开启。
-
curses.
nocbreak
()¶ 离开cbreak模式。返回到正常“熟”模式,使用线缓冲。
-
curses.
noecho
()¶ 离开回波模式。输入字符的回波被关闭。
-
curses.
nonl
()¶ 离开换行模式。禁止将输入翻译为换行符,并禁用将换行符低级转换为换行符/输出返回(但这不会改变
addch('\n')
的行为,相当于虚拟屏幕上的返回和换行)。有了翻译,诅咒有时可以加快垂直运动一点;同样,它将能够检测输入上的返回键。
-
curses.
noqiflush
()¶ 当使用
noqiflush()
例程时,不会执行与INTR,QUIT和SUSP字符相关联的输入和输出队列的正常刷新。如果希望输出在处理程序退出之后继续,就像中断没有发生一样,您可以在信号处理程序中调用noqiflush()
。
-
curses.
noraw
()¶ 离开原始模式。返回到正常“熟”模式,使用线缓冲。
-
curses.
pair_content
(pair_number)¶ 返回包含所请求颜色对的颜色的元组
(fg, bg)
pair_number的值必须在1
和COLOR_PAIRS - 1
。
-
curses.
pair_number
(attr)¶ 返回属性值attr设置的颜色对的编号。
color_pair()
是此函数的对应项。
-
curses.
qiflush
([flag])¶ 如果标志为
False
,则效果与调用noqiflush()
相同。如果标志为True
或没有提供任何参数,则在读取这些控制字符时,队列将被刷新。
-
curses.
raw
()¶ 进入原始模式。在原始模式下,正常线路缓冲和中断,退出,暂停和流控制键的处理被关闭;呈现字符以逐个诅ses输入功能。
-
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()
函数尝试调整所有窗口的大小。然而,由于垫的调用约定,不可能在不与应用程序进行额外交互的情况下调整这些大小。
-
curses.
resizeterm
(nlines, ncols)¶ 将标准窗口和当前窗口调整为指定的尺寸,并调整curses库使用的记录窗口尺寸的其他记录数据(特别是SIGWINCH处理程序)。
-
curses.
setsyx
(y, x)¶ 将虚拟屏幕光标设置为y,x。如果y和x都为-1,则设置leaveok。
-
curses.
setupterm
([termstr, fd])¶ 初始化终端。termstr是给出终端名称的字符串;如果省略,将使用
TERM
环境变量的值。fd是任何初始化序列将被发送到的文件描述器;如果不提供,将使用sys.stdout
的文件描述器。
-
curses.
start_color
()¶ 最好在
initscr()
之后调用此例程。start_color()
initializes eight basic colors (black, red, green, yellow, blue, magenta, cyan, and white), and two global variables in thecurses
module,COLORS
andCOLOR_PAIRS
, containing the maximum number of colors and color-pairs the terminal can support. 它还将终端上的颜色还原为终端刚刚打开时的值。
-
curses.
termattrs
()¶ 返回终端支持的所有视频属性的逻辑或。当curses程序需要完全控制屏幕外观时,此信息很有用。
-
curses.
termname
()¶ 返回环境变量
TERM
的值,截断为14个字符。
-
curses.
tigetflag
(capname)¶ 返回与terminfo能力名称capname对应的布尔能力的值。如果capname不是布尔能力,则返回值
-1
,如果从终端描述中取消或不存在,则返回0
。
-
curses.
tigetnum
(capname)¶ 返回与terminfo能力名称capname对应的数字能力的值。如果capname不是数字能力,则返回值
-2
,如果终端描述中取消或缺少-1
,则返回值
-
curses.
tigetstr
(capname)¶ 返回与terminfo能力名称capname对应的字符串能力的值。如果capname不是字符串功能,或者从终端描述中取消或缺少,则返回
None
。
-
curses.
tparm
(str[, ...])¶ 使用提供的参数实例化字符串str,其中str应为从terminfo数据库获取的参数化字符串。例如。
tparm(tigetstr("cup"), 5, 3)
could result inb'\033[6;4H'
, the exact result depending on terminal type.
-
curses.
typeahead
(fd)¶ 指定文件描述器fd用于字体提示检查。如果fd是
-1
,则不进行字母提前检查。curses库通过在更新屏幕时定期查找typeahead来执行“line-breakout optimization”。如果发现输入,并且它来自tty,则当前更新被推迟,直到再次调用refresh或doupdate,从而允许更快地响应提前键入的命令。此功能允许指定一个不同的文件描述器用于预先检查。
-
curses.
unctrl
(ch)¶ 返回一个字符串,它是字符ch的可打印表示。控制字符显示为插入符号,后跟字符,例如
^C
。打印字符按原样保留。
-
curses.
ungetch
(ch)¶ 按ch,以便下一个
getch()
返回它。注意
在调用
getch()
之前,只能按一个ch。
-
curses.
update_lines_cols
()¶ 更新
LINES
和COLS
。用于检测手动屏幕调整大小。版本3.5中的新功能。
-
curses.
unget_wch
(ch)¶ 按ch,因此下一个
get_wch()
将返回它。注意
在调用
get_wch()
之前,只能推送一个ch。版本3.3中的新功能。
-
curses.
ungetmouse
(id, x, y, z, bstate)¶ 将
KEY_MOUSE
事件推送到输入队列,将给定的状态数据与其关联。
-
curses.
use_env
(flag)¶ 如果使用,则应在调用
initscr()
或newterm之前调用此函数。When flag isFalse
, the values of lines and columns specified in the terminfo database will be used, even if environment variablesLINES
andCOLUMNS
(used by default) are set, or if curses is running in a window (in which case default behavior would be to use the window size ifLINES
andCOLUMNS
are not set).
-
curses.
use_default_colors
()¶ 允许在支持此功能的终端上使用颜色的默认值。使用它来支持应用程序的透明度。默认颜色分配给颜色编号-1。调用此函数后,
init_pair(x, curses.COLOR_RED, -1)
将x对映为默认背景上的红色前景颜色。
16.10.2. Window Objects¶
具有以下方法和属性的由initscr()
和newwin()
返回的窗口对象:
-
window.
addch
(ch[, attr])¶ 窗口。
addch
( y,x,ch t5 > [,attr ] )注意
字符表示C字符(ASCII代码),而不是Python字符(长度为1的字符串)。(每当文档提到字符时,此注释为真。)内建
ord()
方便将字符串传递给代码。在属性attr的
(y, x)
绘制字符ch字符以前画家在那个位置。默认情况下,字符位置和属性是窗口对象的当前设置。
-
window.
addnstr
(str, n[, attr])¶ 窗口。
addnstr
( y,x,str t5 >,n [,attr ] )在
(y, x)
上画字符串str的最多n与属性attr,覆盖以前在显示器上的任何内容。
-
window.
addstr
(str[, attr])¶ 窗口。
addstr
( y,x,str t5 > [,attr ] )使用属性attr绘制
(y, x)
的字符串str任何事先在显示器上。
-
window.
attroff
(attr)¶ 从应用于当前窗口的所有写入的“背景”集中删除属性attr。
-
window.
attron
(attr)¶ 从应用于当前窗口的所有写入的“背景”集中添加属性attr。
-
window.
attrset
(attr)¶ 将“背景”属性集设置为attr。此集合最初为0(无属性)。
-
window.
bkgd
(ch[, attr])¶ 将窗口的背景属性设置为字符ch,属性attr。然后将该更改应用于该窗口中的每个字符位置:
- 窗口中每个字符的属性都将更改为新的背景属性。
- 无论前一个背景字符出现在哪里,它都会更改为新的背景字符。
-
window.
bkgdset
(ch[, attr])¶ 设置窗口的背景。窗口的背景由一个字符和任何属性组合组成。背景的属性部分与写入窗口的所有非空白字符组合(OR'ed)。背景的字符和属性部分都与空白字符组合。背景变成字符的属性,并通过任何滚动和插入/删除行/字符操作与字符一起移动。
-
window.
border
([ls[, rs[, ts[, bs[, tl[, tr[, bl[, br]]]]]]]])¶ 在窗口边缘绘制边框。每个参数指定要用于边框的特定部分的字符;有关详细信息,请参阅下表。字符可以指定为整数或单字符字符串。
注意
任何参数的
0
值将导致为该参数使用默认字符。关键字参数可以使用不。默认值列在此表中:参数 描述 默认值 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)¶ 窗口。
chgat
( num,attr )窗口。
chgat
( y,x,attr t5 > )窗口。
chgat
( y,x,num t5 >,attr )设置当前光标位置或位置
(y, x)
时num字符的属性。如果未给出num的值或num = -1,则属性将在所有字符上设置到行尾。此功能不移动光标。将使用touchline()
方法触摸更改的行,以便下次窗口刷新时重新显示内容。
-
window.
clrtobot
()¶ 从光标到窗口末尾删除:删除光标下面的所有行,然后执行
clrtoeol()
的等效操作。
-
window.
clrtoeol
()¶ 从光标到行尾删除。
-
window.
cursyncup
()¶ 更新窗口的所有祖先的当前光标位置,以反映窗口的当前光标位置。
-
window.
delch
([y, x])¶ 删除
(y, x)
的任何字符。
-
window.
deleteln
()¶ 删除光标下面的行。所有后面的行都向上移动一行。
-
window.
derwin
(begin_y, begin_x)¶ 窗口。
德文
( nlines,ncols,begin_y t5 >,begin_x )除了begin_y和begin_x 之外,“derived window”,
derwin()
的缩写与调用subwin()
返回派生窗口的窗口对象。
-
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])¶ 获取一个字符。请注意,返回的整数不是必须在ASCII范围内:功能键,键盘按键等返回高于256的数字。在无延迟模式下,如果没有输入,返回-1,否则
getch()
等待,直到按下一个键。
-
window.
get_wch
([y, x])¶ 获得广泛的性格。返回大多数键的字符,或功能键,键盘按键和其他特殊键的整数。
版本3.3中的新功能。
-
window.
getkey
([y, x])¶ 获取一个字符,返回一个字符串而不是整数,如
getch()
。功能键,键盘按键和其他特殊键返回包含键名称的多字节字符串。在无延迟模式下,如果没有输入,则引发异常。
-
window.
getmaxyx
()¶ 返回窗口的高度和宽度的元组
(y, x)
。
-
window.
getparyx
()¶ 将此窗口相对于其父窗口的开始坐标返回为两个整数变量y和x。如果此窗口没有父窗口,则返回
-1, -1
。
-
window.
getstr
([y, x])¶ 从用户读取字符串,具有原始行编辑能力。
-
window.
getyx
()¶ 返回当前光标位置相对于窗口左上角的元组
(y, x)
。
-
window.
hline
(ch, n)¶ 窗口。
hline
( y,x,ch t5 >,n )Display a horizontal line starting at
(y, x)
with length n consisting of the character ch.
-
window.
idcok
(flag)¶ 如果标志为
False
,则curses不再考虑使用终端的硬件插入/删除字符功能;如果标志为True
,则启用使用字符插入和删除。当首次初始化curses时,默认情况下启用字符插入/删除的使用。
-
window.
idlok
(yes)¶ If called with yes equal to 1,
curses
will try and use hardware line editing facilities. 否则,将禁用线路插入/删除。
-
window.
immedok
(flag)¶ 如果标志是
True
,窗口图像中的任何更改都会自动导致窗口被刷新;您不再需要自己调用refresh()
。然而,它可能会显着降低性能,由于重复调用wrefresh。默认情况下禁用此选项。
-
window.
inch
([y, x])¶ 返回窗口中给定位置的字符。底部8位是字符正确的,高位是属性。
-
window.
insch
(ch[, attr])¶ 窗口。
insch
( y,x,ch t5 > [,attr ] )在属性attr的
(y, x)
处绘制字符ch T0>从位置x向右移动一个字符。
-
window.
insdelln
(nlines)¶ 将nlines行插入当前行上方的指定窗口中。nlines底线丢失。对于负的nlines,删除nlines以光标下方的一行开始的行,并向上移动剩余的行。底部的nlines行被清除。当前光标位置保持不变。
-
window.
insertln
()¶ 在光标下插入一个空白行。所有后面的行都向下移动一行。
-
window.
insnstr
(str, n[, attr])¶ 窗口。
insnstr
( y,x,str t5 >,n [,attr ] )在光标下面的字符之前插入一个字符串(与在行上适合的字符数相同),最多可以输入n个字符。如果n为零或负数,则插入整个字符串。光标右侧的所有字符向右移动,行上最右边的字符丢失。光标位置不变(移动到y,x后,如果指定)。
-
window.
insstr
(str[, attr])¶ 窗口。
insstr
( y,x,str t5 > [,attr ] )在光标下的字符之前插入一个字符串(尽可能多的字符)。光标右侧的所有字符向右移动,行上最右边的字符丢失。光标位置不变(移动到y,x后,如果指定)。
-
window.
instr
([n])¶ 窗口。
instr
( y,x ,n ] ))返回从当前光标位置开始的窗口中提取的字符串,如果指定,则返回y,x。属性从字符中删除。如果指定n,则
instr()
返回最多n个字符的字符串(不包括尾随的NUL)。
-
window.
is_linetouched
(line)¶ Return
True
if the specified line was modified since the last call torefresh()
; otherwise returnFalse
. 如果行对给定窗口无效,则引发curses.error
异常。
-
window.
is_wintouched
()¶ Return
True
if the specified window was modified since the last call torefresh()
; otherwise returnFalse
.
-
window.
leaveok
(yes)¶ 如果yes为1,则光标位于更新时的位置,而不是位于“光标位置”。这将尽可能减少光标移动。如果可能,光标将不可见。
如果yes为0,则更新后光标将始终位于“光标位置”。
-
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
(yes)¶ 如果是是
1
,则转义序列不会超时。如果yes是
0
,几毫秒后,转义序列将不会被解释,并将保留在输入流中。
-
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.
refresh
([pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol])¶ 立即更新显示(使用以前的绘图/删除方法同步实际屏幕)。
6个可选参数只能在窗口是使用
newpad()
创建的焊盘时指定。需要附加的参数来指示垫和屏幕的哪个部分涉及。pminrow和pmincol指定要在焊盘中显示的矩形的左上角。sminrow,smincol,smaxrow和smaxcol指定要在屏幕上显示的矩形的边。要在屏幕中显示的矩形的右下角从屏幕坐标计算,因为矩形必须具有相同的大小。两个矩形必须完全包含在它们各自的结构中。将pminrow,pmincol,sminrow或smincol的负值视为它们为零。
-
window.
resize
(nlines, ncols)¶ 为curses窗口重新分配存储空间,以将其大小调整为指定的值。如果任一维大于当前值,则窗口的数据用具有合并到其中的当前背景再现(由
bkgdset()
设置)的空白填充。
-
window.
scroll
([lines=1])¶ 按线 T0>向上滚动屏幕或向上滚动区域。
-
window.
scrollok
(flag)¶ 控制当窗口的光标从窗口边缘或滚动区域移开时,由于在底行上的换行操作或输入最后一行的最后一个字符而发生的情况。如果标志为假,则光标位于底行。如果标志为真,则窗口向上滚动一行。注意,为了获得终端上的物理滚动效果,还需要调用
idlok()
。
-
window.
setscrreg
(top, bottom)¶ 将滚动区域从顶部设置为底部。所有滚动操作都将在此区域中进行。
-
window.
standend
()¶ 关闭standout属性。在一些终端上,这具有关闭所有属性的副作用。
-
window.
standout
()¶ 开启属性A_STANDOUT。
-
window.
subpad
(begin_y, begin_x)¶ 窗口。
子板
( nlines,ncols,begin_y t5 >,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.
syncup
()¶ 触摸窗口中已更改的窗口的祖先中的所有位置。
-
window.
timeout
(delay)¶ 设置窗口的阻塞或非阻塞读取行为。如果delay为负,则使用阻塞读(其将无限期地等待输入)。如果delay为零,则使用非阻塞读,如果没有输入等待,则
getch()
返回-1。如果delay为正,则getch()
将阻塞delay毫秒,如果在结束时仍然没有输入,则返回-1那时。
-
window.
touchline
(start, count[, changed])¶ 假设计数行已更改,从开始开始。如果提供了,则指定受影响的行是否标记为已更改(已更改 = 1)或未更改(已更改 = 0) 。
-
window.
touchwin
()¶ 假装整个窗口已经更改,用于绘图优化的目的。
-
window.
vline
(ch, n)¶ 窗口。
vline
( y,x,ch t5 >,n )Display a vertical line starting at
(y, x)
with length n consisting of the character ch.
16.10.3. Constants¶
curses
模块定义以下数据成员:
-
curses.
version
¶ 表示模块当前版本的字符串。也可用作
__version__
。
有几个常量可用于指定字符单元属性:
属性 | 含义 |
---|---|
A_ALTCHARSET | 备用字符集模式。 |
A_BLINK | 闪烁模式。 |
A_BOLD | 粗体模式。 |
A_DIM | 昏暗模式。 |
A_NORMAL | 正常属性。 |
A_REVERSE | 反向背景和前景颜色。 |
A_STANDOUT | 突出模式。 |
A_UNDERLINE | 下划线模式。 |
键由具有以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 | 退出插入char模式 |
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 | g(开头) |
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 | 移位Beg(开始) |
KEY_SCANCEL | 移位取消 |
KEY_SCOMMAND | 移位命令 |
KEY_SCOPY | 移位复制 |
KEY_SCREATE | 移位创建 |
KEY_SDC | Shifted删除char |
KEY_SDL | Shifted删除线 |
KEY_SELECT | 选择 |
KEY_SEND | 移位结束 |
KEY_SEOL | 移位清除线 |
KEY_SEXIT | 移位Dxit |
KEY_SFIND | 移位查找 |
KEY_SHELP | 移位帮助 |
KEY_SHOME | 移位家 |
KEY_SIC | 移位输入 |
KEY_SLEFT | 左移箭头 |
KEY_SMESSAGE | 移位消息 |
KEY_SMOVE | 移动 |
KEY_SNEXT | 移位下一步 |
KEY_SOPTIONS | 移位选项 |
KEY_SPREVIOUS | Shifted上一页 |
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 | 最大键值 |
On VT100s and their software emulations, such as X terminal emulators, there are normally at least four function keys (KEY_F1
, KEY_F2
, KEY_F3
, KEY_F4
) available, and the arrow keys mapped to KEY_UP
, KEY_DOWN
, KEY_LEFT
and KEY_RIGHT
in the obvious way. 如果您的机器有一个PC键盘,可以期望箭头键和十二个功能键(较旧的PC键盘可能只有十个功能键);此外,以下键盘映射是标准的:
键帽 | 不变 |
---|---|
Insert | KEY_IC |
Delete | KEY_DC |
Home | KEY_HOME |
End | KEY_END |
页 上 | KEY_PPAGE |
页 向下 | KEY_NPAGE |
下表列出了备用字符集中的字符。这些是从VT100终端继承的,并且通常在诸如X终端的软件仿真上可用。当没有可用的图形时,诅咒回退到可粗略打印的ASCII近似。
注意
这些只有在调用initscr()
之后才可用。
ACS代码 | 含义 |
---|---|
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 | 字母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 | 黄色 |
16.11. 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破折号,垂直条和加号来绘制。
16.11.1. Textbox objects¶
您可以如下实例化Textbox
对象:
- class
curses.textpad.
Textbox
(win)¶ 返回一个文本框widget对象。win参数应为curses
WindowObject
,其中包含文本框。文本框的编辑光标最初位于包含窗口的左上角,坐标为(0, 0)
。实例的stripspaces
标志最初是开启的。Textbox
对象具有以下方法:-
edit
([validator])¶ 这是您通常使用的入口点。它接受编辑按键,直到输入一个终止按键。如果提供验证器,它必须是一个函数。将按键输入的每个击键作为参数调用它;命令分派对结果完成。此方法以字符串形式返回窗口内容;是否包括窗口中的空白受
stripspaces
属性影响。
-
do_command
(ch)¶ 处理单个命令按键。以下是支持的特殊按键:
击键 行动 Control-A
转到窗口的左边缘。 Control-B
光标向左,如果合适,则包含到上一行。 Control-D
删除光标下的字符。 Control-E
转到右边缘(strippaces off)或行尾(strippaces 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
¶ 此属性是控制窗口中空白解释的标志。当它打开时,每行上的尾随空白将被忽略;则将光标停留在尾部空白上的任何光标移动都到该行的结尾,并且当收集窗口内容时,尾部空白被去除。
-