curses
--- 終端字符單元顯示的處理?
curses
模塊提供了 curses 庫的接口,這是可移植高級終端處理的事實(shí)標準。
雖然 curses 在 Unix 環(huán)境中使用最為廣泛,但也有適用于 Windows,DOS 以及其他可能的系統的版本。此擴展模塊旨在匹配 ncurses 的 API,這是一個(gè)部署在 Linux 和 Unix 的 BSD 變體上的開(kāi)源 curses 庫。
備注
每當文檔提到 字符 時(shí),它可以被指定為一個(gè)整數,一個(gè)單字符 Unicode 字符串或者一個(gè)單字節的字節字符串。
每當此文檔提到 字符串 時(shí),它可以被指定為一個(gè) Unicode 字符串或者一個(gè)字節字符串。
參見(jiàn)
- 模塊
curses.ascii
在 ASCII 字符上工作的工具,無(wú)論你的區域設置是什么。
- 模塊
curses.panel
為 curses 窗口添加深度的面板棧擴展。
- 模塊
curses.textpad
用于使 curses 支持 Emacs 式綁定的可編輯文本部件。
- 用 Python 進(jìn)行 Curses 編程
關(guān)于配合 Python 使用 curses 的教學(xué)材料,由 Andrew Kuchling 和 Eric Raymond 撰寫(xiě)。
Python 源碼發(fā)布包的 Tools/demo/ 目錄包含了一些使用此模塊所提供的 curses 綁定的示例程序。
函數?
curses
模塊定義了以下異常:
- exception curses.error?
當 curses 庫中函數返回一個(gè)錯誤時(shí)引發(fā)的異常。
備注
只要一個(gè)函數或方法的 x 或 y 參數是可選項,它們會(huì )默認為當前光標位置。 而當 attr 是可選項時(shí),它會(huì )默認為 A_NORMAL
。
curses
模塊定義了以下函數:
- curses.baudrate()?
以每秒比特數為單位返回終端輸出速度。 在軟件終端模擬器上它將具有一個(gè)固定的最高值。 此函數出于歷史原因被包括;在以前,它被用于寫(xiě)輸出循環(huán)以提供時(shí)間延遲,并偶爾根據線(xiàn)路速度來(lái)改變接口。
- curses.beep()?
發(fā)出短促的提醒聲音。
- curses.can_change_color()?
根據程序員能否改變終端顯示的顏色返回
True
或False
。
- curses.cbreak()?
進(jìn)入 cbreak 模式。 在 cbreak 模式(有時(shí)也稱(chēng)為“稀有”模式)通常的 tty 行緩沖會(huì )被關(guān)閉并且字符可以被一個(gè)一個(gè)地讀取。 但是,與原始模式不同,特殊字符(中斷、退出、掛起和流程控制)會(huì )在 tty 驅動(dòng)和調用程序上保留其效果。 首先調用
raw()
然后調用cbreak()
會(huì )將終端置于 cbreak 模式。
- curses.color_content(color_number)?
返回顏色值 color_number 中紅、綠和藍(RGB)分量的強度,此強度值必須介于
0
和COLORS - 1
之間。 返回一個(gè) 3 元組,其中包含給定顏色的 R,G,B 值,它們必須介于0
(無(wú)分量) 和1000
(最大分量) 之間。
- curses.color_pair(pair_number)?
返回用于以指定顏色對顯示文本的屬性值。 僅支持前 256 個(gè)顏色對。 該屬性值可與
A_STANDOUT
,A_REVERSE
以及其他A_*
屬性組合使用。pair_number()
是此函數的對應操作。
- curses.curs_set(visibility)?
設置光標狀態(tài)。 visibility 可設為
0
,1
或2
表示不可見(jiàn)、正常與高度可見(jiàn)。 如果終端支持所請求的可見(jiàn)性,則返回之前的光標狀態(tài);否則會(huì )引發(fā)異常。 在許多終端上,“正??梢?jiàn)”模式為下劃線(xiàn)光標而“高度可見(jiàn)”模式為方塊形光標。
- curses.def_prog_mode()?
將當前終端模式保存為 "program" 模式,即正在運行的程序使用 curses 的模式。 (與其相對的是 "shell" 模式,即程序不使用 curses。) 對
reset_prog_mode()
的后續調用將恢復此模式。
- curses.def_shell_mode()?
將當前終端模式保存為 "shell" 模式,即正在運行的程序不使用 curses 的模式。 (與其相對的是 "program" 模式,即程序使用 功能。) 對
reset_shell_mode()
的后續調用將恢復此模式。
- curses.delay_output(ms)?
在輸出中插入 ms 毫秒的暫停。
- curses.doupdate()?
更新物理屏幕。 curses 庫會(huì )保留兩個(gè)數據結構,一個(gè)代表當前物理屏幕的內容以及一個(gè)虛擬屏幕代表需要的后續狀態(tài)。
doupdate()
整體更新物理屏幕以匹配虛擬屏幕。虛擬屏幕可以通過(guò)在寫(xiě)入操作例如在一個(gè)窗口上執行
addstr()
之后調用noutrefresh()
來(lái)刷新。 普通的refresh()
調用只是簡(jiǎn)單的noutrefresh()
加doupdate()
;如果你需要更新多個(gè)窗口,你可以通過(guò)在所有窗口上發(fā)出noutrefresh()
調用再加單次doupdate()
來(lái)提升性能并可減少屏幕閃爍。
- curses.echo()?
進(jìn)入 echo 模式。 在 echo 模式下,輸入的每個(gè)字符都會(huì )在輸入后回顯到屏幕上。
- curses.endwin()?
撤銷(xiāo)庫的初始化,使終端返回正常狀態(tài)。
- curses.erasechar()?
將用戶(hù)的當前擦除字符以單字節字節串對象的形式返回。 在 Unix 操作系統下這是 curses 程序用來(lái)控制 tty 的屬性,而不是由 curses 庫本身來(lái)設置的。
- curses.filter()?
如果要使用
filter()
例程,它必須在調用initscr()
之前被調用。 其效果是在這些調用期間,LINES
會(huì )被設為1
;clear
,cup
,cud
,cud1
,cuu1
,cuu
,vpa
等功能會(huì )被禁用;而home
字符串會(huì )被設為cr
的值。 其影響是光標會(huì )被限制在當前行內,屏幕刷新也是如此。 這可被用于啟用單字符模式的行編輯而不觸及屏幕的其余部分。
- curses.flash()?
閃爍屏幕。 也就是將其改為反顯并在很短的時(shí)間內將其改回原狀。 有些人更喜歡這樣的‘視覺(jué)響鈴’而非
beep()
所產(chǎn)生的聽(tīng)覺(jué)提醒信號。
- curses.flushinp()?
刷新所有輸入緩沖區。 這會(huì )丟棄任何已被用戶(hù)輸入但尚未被程序處理的預輸入內容。
- curses.getmouse()?
在
getch()
返回KEY_MOUSE
以發(fā)出鼠標事件信號之后,應當調用此方法來(lái)獲取加入隊列的鼠標事件,事件以一個(gè) 5 元組(id, x, y, z, bstate)
來(lái)表示。 其中 id 為用于區分多個(gè)設備的 ID 值,而 x, y, z 為事件的坐標。 (z 目前未被使用。) bstate 為一個(gè)整數值,其各個(gè)比特位將被設置用來(lái)表示事件的類(lèi)型,并將為下列常量中的一個(gè)或多個(gè)按位 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 庫提供的則會(huì )對外公開(kāi)。
- curses.getwin(file)?
讀取由之前的
putwin()
調用存放在文件中的窗口相關(guān)數據。 該例程隨后將使用該數據創(chuàng )建并初始化一個(gè)新窗口,并返回該新窗口對象。
- curses.has_colors()?
如果終端能顯示彩色則返回
True
;否則返回False
。
- curses.has_extended_color_support()?
如果此模塊支持擴展顏色則返回
True
;否則返回False
。 擴展顏色支持允許支持超過(guò) 16 種顏色的終端(例如 xterm-256color)支持超過(guò) 256 種顏色對。擴展顏色支持要求 ncurses 版本為 6.1 或更新。
3.10 新版功能.
- curses.has_ic()?
如果終端具有插入和刪除字符的功能則返回
True
。 此函數僅是出于歷史原因而被包括的,因為所有現代軟件終端模擬器都具有這些功能。
- curses.has_il()?
如果終端具有插入和刪除字符功能,或者能夠使用滾動(dòng)區域來(lái)模擬這些功能則返回
True
。 此函數僅是出于歷史原因而被包括的,因為所有現代軟件終端模擬器都具有這些功能。
- curses.has_key(ch)?
接受一個(gè)鍵值 ch,并在當前終端類(lèi)型能識別出具有該值的鍵時(shí)返回
True
。
- curses.halfdelay(tenths)?
用于半延遲模式,與 cbreak 模式的類(lèi)似之處是用戶(hù)所鍵入的字符會(huì )立即對程序可用。 但是,在阻塞 tenths 個(gè)十分之一秒之后,如果還未輸入任何內容則將引發(fā)異常。 tenths 值必須為
1
和255
之間的數字。 使用nocbreak()
可退出半延遲模式。
- curses.init_color(color_number, r, g, b)?
更改某個(gè)顏色的定義,接受要更改的顏色編號以及三個(gè) RGB 值(表示紅綠藍三分量的強度)。 color_number 值必須為
0
和 COLORS - 1 之間的數字。 r, g, b 值必須為0
和1000
之間的數字。 當使用init_color()
時(shí),出現在屏幕上的對應顏色會(huì )立即按照新定義來(lái)更改。 此函數在大多數終端上都是無(wú)操作的;它僅會(huì )在can_change_color()
返回True
時(shí)生效。
- curses.init_pair(pair_number, fg, bg)?
更改某個(gè)顏色對的定義。 它接受三個(gè)參數:要更改的顏色對編號,前景色編號和背景色編號。 pair_number 值必須為
1
和COLOR_PAIRS - 1
之間的數字(并且0
號顏色對固定為黑底白字而無(wú)法更改)。 fg 和 bg 參數必須為0
和COLORS - 1
之間的數字,或者在調用use_default_colors()
之后則為-1
。 如果顏色對之前已被初始化,則屏幕會(huì )被刷新使得出現在屏幕上的該顏色會(huì )立即按照新定義來(lái)更改。
- curses.initscr()?
初始化庫。 返回代表整個(gè)屏幕的 窗口 對象。
備注
如果打開(kāi)終端時(shí)發(fā)生錯誤,則下層的 curses 庫可能會(huì )導致解釋器退出。
- curses.is_term_resized(nlines, ncols)?
如果
resize_term()
會(huì )修改窗口結構則返回True
,否則返回False
。
- curses.keyname(k)?
將編號為 k 的鍵名稱(chēng)作為字節串對象返回。 生成可打印 ASCII 字符的鍵名稱(chēng)就是鍵所對應的字符。 Ctrl-鍵組合的鍵名稱(chēng)則是一個(gè)兩字節的字節串對象,它由插入符 (
b'^'
) 加對應的可打印 ASCII 字符組成。 Alt-鍵組合 (128--255) 的鍵名稱(chēng)則是由前綴b'M-'
加對應的可打印 ASCII 字符組成的字節串對象。
- curses.killchar()?
將用戶(hù)的當前行刪除字符以單字節字節串對象的形式返回。 在 Unix 操作系統下這是 curses 程序用來(lái)控制 tty 的屬性,而不是由 curses 庫本身來(lái)設置的。
- curses.longname()?
返回一個(gè)字節串對象,其中包含描述當前終端的 terminfo 長(cháng)名稱(chēng)字段。 詳細描述的最大長(cháng)度為 128 個(gè)字符。 它僅在調用
initscr()
之后才會(huì )被定義。
- curses.meta(flag)?
如果 flag 為
True
,則允許輸入 8 比特位的字符。 如果 flag 為False
,則只允許 7 比特位的字符。
- curses.mouseinterval(interval)?
Set the maximum time in milliseconds that can elapse between press and release events in order for them to be recognized as a click, and return the previous interval value. The default value is 200 milliseconds, or one fifth of a second.
- curses.mousemask(mousemask)?
設置要報告的鼠標事件,并返回一個(gè)元組
(availmask, oldmask)
。 availmask 表明指定的鼠標事件中哪些可以被報告;當完全失敗時(shí)將返回0
。 oldmask 是給定窗口的鼠標事件之前的掩碼值。 如果從未調用此函數,則不會(huì )報告任何鼠標事件。
- curses.napms(ms)?
休眠 ms 毫秒。
- curses.newpad(nlines, ncols)?
創(chuàng )建并返回一個(gè)指向具有給定行數和列數新的面板數據結構的指針。 將面板作為窗口對象返回。
面板類(lèi)似于窗口,區別在于它不受屏幕大小的限制,并且不必與屏幕的特定部分相關(guān)聯(lián)。 面板可以在需要使用大窗口時(shí)使用,并且每次只需將窗口的一部分放在屏幕上。 面板不會(huì )發(fā)生自動(dòng)刷新(例如由于滾動(dòng)或輸入回顯)。 面板的
refresh()
和noutrefresh()
方法需要 6 個(gè)參數來(lái)指定面板要顯示的部分以及要用于顯示的屏幕位置。 這些參數是 pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol;p 參數表示要顯示的面板區域的左上角而 s 參數定義了要顯示的面板區域在屏幕上的剪切框。
- curses.newwin(nlines, ncols)?
- curses.newwin(nlines, ncols, begin_y, begin_x)
返回一個(gè)新的 窗口,其左上角位于
(begin_y, begin_x)
,并且其高度/寬度為 nlines/ncols。默認情況下,窗口將從指定位置擴展到屏幕的右下角。
- curses.nl()?
進(jìn)入 newline 模式。 此模式會(huì )在輸入時(shí)將回車(chē)轉換為換行符,并在輸出時(shí)將換行符轉換為回車(chē)加換行。 newline 模式會(huì )在初始時(shí)啟用。
- curses.nocbreak()?
退出 cbreak 模式。 返回具有行緩沖的正常 "cooked" 模式。
- curses.noecho()?
退出 echo 模式。 關(guān)閉輸入字符的回顯。
- curses.nonl()?
退出 newline 模式。 停止在輸入時(shí)將回車(chē)轉換為換行,并停止在輸出時(shí)從換行到換行/回車(chē)的底層轉換(但這不會(huì )改變
addch('\n')
的行為,此行為總是在虛擬屏幕上執行相當于回車(chē)加換行的操作)。 當停止轉換時(shí),curses 有時(shí)能使縱向移動(dòng)加快一些;并且,它將能夠在輸入時(shí)檢測回車(chē)鍵。
- curses.noqiflush()?
當使用
noqiflush()
例程時(shí),與INTR
,QUIT
和SUSP
字符相關(guān)聯(lián)的輸入和輸出隊列的正常刷新將不會(huì )被執行。 如果你希望在處理程序退出后還能繼續輸出,就像沒(méi)有發(fā)生過(guò)中斷一樣,你可能會(huì )想要在信號處理程序中調用noqiflush()
。
- curses.noraw()?
退出 raw 模式。 返回具有行緩沖的正常 "cooked" 模式。
- curses.pair_content(pair_number)?
返回包含對應于所請求顏色對的元組
(fg, bg)
。 pair_number 的值必須在0
和COLOR_PAIRS - 1
之間。
- curses.pair_number(attr)?
返回通過(guò)屬性值 attr 所設置的顏色對的編號。
color_pair()
是此函數的對應操作。
- curses.putp(str)?
等價(jià)于
tputs(str, 1, putchar)
;為當前終端發(fā)出指定 terminfo 功能的值。 請注意putp()
的輸出總是前往標準輸出。
- curses.qiflush([flag])?
如果 flag 為
False
,則效果與調用noqiflush()
相同。 如果 flag 為True
或未提供參數,則在讀取這些控制字符時(shí)隊列將被刷新。
- curses.raw()?
進(jìn)入 raw 模式。 在 raw 模式下,正常的行緩沖和對中斷、退出、掛起和流程控制鍵的處理會(huì )被關(guān)閉;字符會(huì )被逐個(gè)地提交給 curses 輸入函數。
- curses.reset_prog_mode()?
將終端恢復到 "program" 模式,如之前由
def_prog_mode()
所保存的一樣。
- curses.reset_shell_mode()?
將終端恢復到 "shell" 模式,如之前由
def_shell_mode()
所保存的一樣。
- curses.resize_term(nlines, ncols)?
由
resizeterm()
用來(lái)執行大部分工作的后端函數;當調整窗口大小時(shí),resize_term()
會(huì )以空白填充擴展區域。 調用方應用程序應當以適當的數據填充這些區域。resize_term()
函數會(huì )嘗試調整所有窗口的大小。 但是,由于面板的調用約定,在不與應用程序進(jìn)行額外交互的情況下是無(wú)法調整其大小的。
- curses.resizeterm(nlines, ncols)?
將標準窗口和當前窗口的大小調整為指定的尺寸,并調整由 curses 庫所使用的記錄窗口尺寸的其他記錄數據(特別是 SIGWINCH 處理程序)。
- curses.get_escdelay()?
提取通過(guò)
set_escdelay()
設置的值。3.9 新版功能.
- curses.set_escdelay(ms)?
設置讀取一個(gè)轉義字符后要等待的毫秒數,以區分在鍵盤(pán)上輸入的單個(gè)轉義字符與通過(guò)光標和功能鍵發(fā)送的轉義序列。
3.9 新版功能.
- curses.get_tabsize()?
提取通過(guò)
set_tabsize()
設置的值。3.9 新版功能.
- curses.set_tabsize(size)?
設置 curses 庫在將制表符添加到窗口時(shí)將制表符轉換為空格所使用的列數。
3.9 新版功能.
- curses.setupterm(term=None, fd=- 1)?
初始化終端。 term 為給出終端名稱(chēng)的字符串或為
None
;如果省略或為None
,則將使用TERM
環(huán)境變量的值。 fd 是任何初始化序列將被發(fā)送到的文件描述符;如未指定或為-1
,則將使用sys.stdout
的文件描述符。
- curses.start_color()?
如果程序員想要使用顏色,則必須在任何其他顏色操作例程被調用之前調用它。 在
initscr()
之后立即調用此例程是一個(gè)很好的做法。start_color()
會(huì )初始化八種基本顏色(黑、紅、綠、黃、藍、品、青和白)以及curses
模塊中的兩個(gè)全局變量COLORS
和COLOR_PAIRS
,其中包含終端可支持的顏色和顏色對的最大數量。 它還會(huì )將終端中的顏色恢復為終端剛啟動(dòng)時(shí)的值。
- curses.termattrs()?
返回終端所支持的所有視頻屬性邏輯 OR 的值。 此信息適用于當 curses 程序需要對屏幕外觀(guān)進(jìn)行完全控制的情況。
- curses.termname()?
將環(huán)境變量
TERM
的值截短至 14 個(gè)字節,作為字節串對象返回。
- curses.tigetflag(capname)?
將與 terminfo 功能名稱(chēng) capname 相對應的布爾功能值以整數形式返回。 如果 capname 不是一個(gè)布爾功能則返回
-1
,如果其被取消或不存在于終端描述中則返回0
。
- curses.tigetnum(capname)?
將與 terminfo 功能名稱(chēng) capname 相對應的數字功能值以整數形式返回。 如果 capname 不是一個(gè)數字功能則返回
-2
,如果其被取消或不存在于終端描述中則返回-1
。
- curses.tigetstr(capname)?
將與 terminfo 功能名稱(chēng) capname 相對應的字符串功能值以字節串對象形式返回。 如果 capname 不是一個(gè) terminfo "字符串功能" 或者如果其被取消或不存在于終端描述中則返回
None
。
- curses.tparm(str[, ...])?
使用提供的形參初始化字節串對象 str,其中 str 應當是從 terminfo 數據庫獲取的參數化字符串。 例如
tparm(tigetstr("cup"), 5, 3)
的結果可能為b'\033[6;4H'
,實(shí)際結果將取決于終端類(lèi)型。
- curses.typeahead(fd)?
指定將被用于預輸入檢查的文件描述符 fd。 如果 fd 為
-1
,則不執行預輸入檢查。curses 庫會(huì )在更新屏幕時(shí)通過(guò)定期查找預輸入來(lái)執行 "斷行優(yōu)化"。 如果找到了輸入,并且輸入是來(lái)自于 tty,則會(huì )將當前更新推遲至 refresh 或 doupdate 再次被調用的時(shí)候,以便允許更快地響應預先輸入的命令。 此函數允許為預輸入檢查指定其他的文件描述符。
- curses.unctrl(ch)?
返回一個(gè)字節串對象作為字符 ch 的可打印表示形式。 控制字符會(huì )表示為一個(gè)變換符加相應的字符,例如
b'^C'
。 可打印字符則會(huì )保持原樣。
- curses.update_lines_cols()?
更新
LINES
和COLS
。 適用于檢測屏幕大小的手動(dòng)調整。3.5 新版功能.
- curses.unget_wch(ch)?
推送 ch 以便讓下一個(gè)
get_wch()
返回該字符。備注
在
get_wch()
被調用之前只能推送一個(gè) ch。3.3 新版功能.
- curses.ungetmouse(id, x, y, z, bstate)?
將
KEY_MOUSE
事件推送到輸入隊列,將其與給定的狀態(tài)數據進(jìn)行關(guān)聯(lián)。
- curses.use_env(flag)?
如果使用此函數,則應當在調用
initscr()
或 newterm 之前調用它。 當 flag 為False
時(shí),將會(huì )使用在 terminfo 數據庫中指定的行和列的值,即使設置了環(huán)境變量LINES
和COLUMNS
(默認使用),或者如果 curses 是在窗口中運行(在此情況下如果未設置LINES
和COLUMNS
則默認行為將是使用窗口大?。?。
- curses.use_default_colors()?
允許在支持此特性的終端上使用默認的顏色值。 使用此函數可在你的應用程序中支持透明效果。 默認顏色會(huì )被賦給顏色編號
-1
。 舉例來(lái)說(shuō),在調用此函數后,init_pair(x, curses.COLOR_RED, -1)
會(huì )將顏色對 x 初始化為紅色前景和默認顏色背景。
- curses.wrapper(func, /, *args, **kwargs)?
初始化 curses 并調用另一個(gè)可調用對象 func,該對象應當為你的使用 curses 的應用程序的其余部分。 如果應用程序引發(fā)了異常,此函數將在重新引發(fā)異常并生成回溯信息之前將終端恢復到正常狀態(tài)。 隨后可調用對象 func 會(huì )被傳入主窗口 'stdscr' 作為其第一個(gè)參數,再帶上其他所有傳給
wrapper()
的參數。 在調用 func 之前,wrapper()
會(huì )啟用 cbreak 模式,關(guān)閉回顯,啟用終端鍵盤(pán),并在終端具有顏色支持的情況下初始化顏色。 在退出時(shí)(無(wú)論是正常退出還是異常退出)它會(huì )恢復 cooked 模式,打開(kāi)回顯,并禁用終端鍵盤(pán)。
Window 對象?
Window 對象會(huì )由上面的 initscr()
和 newwin()
返回,它具有以下方法和屬性:
- window.addch(ch[, attr])?
- window.addch(y, x, ch[, attr])
將帶有屬性 attr 的字符 ch 繪制到
(y, x)
,覆蓋之前在該位置上繪制的任何字符。 默認情況下,字符的位置和屬性均為窗口對象的當前設置。備注
在窗口、子窗口或面板之外寫(xiě)入會(huì )引發(fā)
curses.error
。 嘗試在窗口、子窗口或面板的右下角寫(xiě)入將在字符被打印之后導致異常被引發(fā)。
- window.addnstr(str, n[, attr])?
- window.addnstr(y, x, str, n[, attr])
將帶有屬性 attr 的字符串 str 中的至多 n 個(gè)字符繪制到
(y, x)
,覆蓋之前在屏幕上的任何內容。
- window.addstr(str[, attr])?
- window.addstr(y, x, str[, attr])
將帶有屬性 attr 的字符串 str 繪制到
(y, x)
,覆蓋之前在屏幕上的任何內容。備注
在窗口、子窗口或面板之外寫(xiě)入會(huì )引發(fā)
curses.error
。 嘗試在窗口、子窗口或面板的右下角寫(xiě)入將在字符串被打印之后導致異常被引發(fā)。此 Python 模塊的后端 ncurses 中的一個(gè)缺陷 會(huì )在調整窗口大小時(shí)導致段錯誤。 此缺陷已在 ncurses-6.1-20190511 中被修復。 如果你必須使用較早版本的 ncurses,則你只要在調用
addstr()
時(shí)不傳入嵌入了換行符的 str 即可避免觸發(fā)此錯誤。 請為每一行分別調用addstr()
。
- window.attroff(attr)?
從應用于寫(xiě)入到當前窗口的 "background" 集中移除屬性 attr。
- window.attron(attr)?
向應用于寫(xiě)入到當前窗口的 "background" 集中添加屬性 attr。
- window.attrset(attr)?
將 "background" 屬性集設為 attr。 該集合初始時(shí)為
0
(無(wú)屬性)。
- window.bkgd(ch[, attr])?
將窗口 background 特征屬性設為帶有屬性 attr 的字符 ch。 隨后此修改將應用于放置到該窗口中的每個(gè)字符。
窗口中每個(gè)字符的屬性會(huì )被修改為新的 background 屬性。
不論之前的 background 字符出現在哪里,它都會(huì )被修改為新的 background 字符。
- window.bkgdset(ch[, attr])?
設置窗口的背景。 窗口的背景由字符和屬性的任意組合構成。 背景的屬性部分會(huì )與寫(xiě)入窗口的所有非空白字符合并(即 OR 運算)。 背景和字符和屬性部分均會(huì )與空白字符合并。 背景將成為字符的特征屬性并在任何滾動(dòng)與插入/刪除行/字符操作中與字符一起移動(dòng)。
- window.border([ls[, rs[, ts[, bs[, tl[, tr[, bl[, br]]]]]]]])?
在窗口邊緣繪制邊框。每個(gè)參數指定用于邊界特定部分的字符;請參閱下表了解更多詳情。
備注
任何形參的值為
0
都將導致該形參使用默認字符。 關(guān)鍵字形參 不可 被使用。 默認字符在下表中列出:參數
描述
默認值
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])?
類(lèi)似于
border()
,但 ls 和 rs 均為 vertch 而 ts 和 bs 均為 horch。 此函數總是會(huì )使用默認的轉角字符。
- window.chgat(attr)?
- window.chgat(num, attr)
- window.chgat(y, x, attr)
- window.chgat(y, x, num, attr)
在當前光標位置或是在所提供的位置
(y, x)
設置 num 個(gè)字符的屬性。 如果 num 未給出或為-1
,則將屬性設置到所有字符上直至行尾。 如果提供了位置(y, x)
則此函數會(huì )將光標移至該位置。 修改過(guò)的行將使用touchline()
方法處理以便下次窗口刷新時(shí)內容會(huì )重新顯示。
- window.clrtobot()?
從光標位置開(kāi)始擦除直至窗口末端:光標以下的所有行都會(huì )被刪除,然后會(huì )執行
clrtoeol()
的等效操作。
- window.clrtoeol()?
從光標位置開(kāi)始擦除直至行尾。
- window.cursyncup()?
更新窗口所有上級窗口的當前光標位置以反映窗口的當前光標位置。
- window.delch([y, x])?
刪除位于
(y, x)
的任何字符。
- window.deleteln()?
刪除在光標之下的行。 所有后續的行都會(huì )上移一行。
- window.derwin(begin_y, begin_x)?
- window.derwin(nlines, ncols, begin_y, begin_x)
"derive window" 的縮寫(xiě),
derwin()
與調用subwin()
等效,不同之處在于 begin_y 和 begin_x 是想對于窗口的初始位置,而不是相對于整個(gè)屏幕。 返回代表所派生窗口的窗口對象。
- window.enclose(y, x)?
檢測給定的相對屏幕的字符-單元格坐標是否被給定的窗口所包圍,返回
True
或False
。 它適用于確定是哪個(gè)屏幕窗口子集包圍著(zhù)某個(gè)鼠標事件的位置。在 3.10 版更改: 在之前版本中它會(huì )返回
1
或0
而不是True
或False
。
- window.encoding?
Encoding used to encode method arguments (Unicode strings and characters). The encoding attribute is inherited from the parent window when a subwindow is created, for example with
window.subwin()
. By default, current locale encoding is used (seelocale.getencoding()
).3.3 新版功能.
- window.erase()?
清空窗口。
- window.getbegyx()?
返回左上角坐標的元組
(y, x)
。
- window.getbkgd()?
返回給定窗口的當前背景字符/屬性對。
- window.getch([y, x])?
獲取一個(gè)字符。 請注意所返回的整數 不一定 要在 ASCII 范圍以?xún)龋汗δ苕I、小鍵盤(pán)鍵等等是由大于 255 的數字表示的。 在無(wú)延遲模式下,如果沒(méi)有輸入則返回
-1
,在其他情況下都會(huì )等待直至有鍵被按下。
- window.get_wch([y, x])?
獲取一個(gè)寬字符。 對于大多數鍵都是返回一個(gè)字符,對于功能鍵、小鍵盤(pán)鍵和其他特殊鍵則是返回一個(gè)整數。 在無(wú)延遲模式下,如果沒(méi)有輸入則引發(fā)一個(gè)異常。
3.3 新版功能.
- window.getkey([y, x])?
獲取一個(gè)字符,返回一個(gè)字符串而不是像
getch()
那樣返回一個(gè)整數。 功能鍵、小鍵盤(pán)鍵和其他特殊鍵則是返回一個(gè)包含鍵名的多字節字符串。 在無(wú)延遲模式下,如果沒(méi)有輸入則引發(fā)一個(gè)異常。
- window.getmaxyx()?
返回窗口高度和寬度的元組
(y, x)
。
- window.getparyx()?
將此窗口相對于父窗口的起始坐標作為元組
(y, x)
返回。 如果此窗口沒(méi)有父窗口則返回(-1, -1)
。
- window.getstr()?
- window.getstr(n)
- window.getstr(y, x)
- window.getstr(y, x, n)
從用戶(hù)讀取一個(gè)字節串對象,附帶基本的行編輯功能。
- window.getyx()?
返回當前光標相對于窗口左上角的位置的元組
(y, x)
。
- window.hline(ch, n)?
- window.hline(y, x, ch, n)
顯示一條起始于
(y, x)
長(cháng)度為 n 個(gè)字符 ch 的水平線(xiàn)。
- window.idcok(flag)?
如果 flag 為
False
,curses 將不再考慮使用終端的硬件插入/刪除字符功能;如果 flag 為True
,則會(huì )啟用字符插入和刪除。 當 curses 首次初始化時(shí),默認會(huì )啟用字符插入/刪除。
- window.immedok(flag)?
如果 flag 為
True
,窗口圖像中的任何改變都會(huì )自動(dòng)導致窗口被刷新;你不必再自己調用refresh()
。 但是,這可能會(huì )由于重復調用 wrefresh 而顯著(zhù)降低性能。 此選項默認被禁用。
- window.inch([y, x])?
返回窗口中給定位置上的字符。 下面的 8 個(gè)比特位是字符本身,上面的比特位則為屬性。
- window.insch(ch[, attr])?
- window.insch(y, x, ch[, attr])
將帶有屬性 attr 的字符 ch 繪制到
(y, x)
,將該行從位置 x 開(kāi)始右移一個(gè)字符。
- window.insdelln(nlines)?
在指定窗口的當前行上方插入 nlines 行。 下面的 nlines 行將丟失。 對于 nlines 為負值的情況,則從光標下方的行開(kāi)始刪除 nlines 行,并將其余的行向上移動(dòng)。 下面的 nlines 行會(huì )被清空。 當前光標位置將保持不變。
- window.insertln()?
在光標下方插入一個(gè)空行。 所有后續的行都會(huì )下移一行。
- window.insnstr(str, n[, attr])?
- window.insnstr(y, x, str, n[, attr])
在光標下方的字符之前插入一個(gè)至多為 n 個(gè)字符的字符串(字符數量將與該行相匹配)。 如果 n 為零或負數,則插入整個(gè)字符串。 光標右邊的所有字符將被右移,該行右端的字符將丟失。 光標位置將保持不變(在移到可能指定的 y, x 之后)。
- window.insstr(str[, attr])?
- window.insstr(y, x, str[, attr])
在光標下方的字符之前插入一個(gè)字符串(字符數量將與該行相匹配)。 光標右邊的所有字符將被右移,該行右端的字符將丟失。 光標位置將保持不變(在移到可能指定的 y, x 之后)。
- window.instr([n])?
- window.instr(y, x[, n])
返回從窗口的當前光標位置,或者指定的 y, x 開(kāi)始提取的字符所對應的字節串對象。 屬性會(huì )從字符中去除。 如果指定了 n,
instr()
將返回長(cháng)度至多為 n 個(gè)字符的字符串(不包括末尾的 NUL)。
- window.is_linetouched(line)?
如果指定的行自上次調用
refresh()
后發(fā)生了改變則返回True
;否則返回False
。 如果 line 對于給定的窗口不可用則會(huì )引發(fā)curses.error
異常。
- window.keypad(flag)?
如果 flag 為
True
,則某些鍵(小鍵盤(pán)鍵、功能鍵等)生成的轉義序列將由curses
來(lái)解析。 如果 flag 為False
,轉義序列將保持在輸入流中的原樣。
- window.leaveok(flag)?
如果 flag 為
True
,則在更新時(shí)光標將停留在原地,而不是在“光標位置”。 這將可以減少光標的移動(dòng)。 在可能的情況下光標將變?yōu)椴豢梢?jiàn)。如果 flag 為
False
,光標在更新后將總是位于“光標位置”。
- window.move(new_y, new_x)?
將光標移至
(new_y, new_x)
。
- window.mvderwin(y, x)?
讓窗口在其父窗口內移動(dòng)。 窗口相對于屏幕的參數不會(huì )被更改。 此例程用于在屏幕的相同物理位置顯示父窗口的不同部分。
- window.mvwin(new_y, new_x)?
移動(dòng)窗口以使其左上角位于
(new_y, new_x)
。
- window.notimeout(flag)?
如果 flag 為
True
,則轉義序列將不會(huì )發(fā)生超時(shí)。如果 flag 為
False
,則在幾毫秒之后,轉義序列將不會(huì )被解析,并將保持在輸入流中的原樣。
- window.noutrefresh()?
標記為刷新但保持等待。 此函數會(huì )更新代表預期窗口狀態(tài)的數據結構,但并不強制更新物理屏幕。 要完成后者,請調用
doupdate()
。
- window.overlay(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol])?
將窗口覆蓋在 destwin 上方。 窗口的大小不必相同,只有重疊的區域會(huì )被復制。 此復制是非破壞性的,這意味著(zhù)當前背景字符不會(huì )覆蓋掉 destwin 的舊內容。
為了獲得對被復制區域的細粒度控制,可以使用
overlay()
的第二種形式。 sminrow 和 smincol 是源窗口的左上角坐標,而其他變量則在目標窗口中標記出一個(gè)矩形。
- window.overwrite(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol])?
將窗口覆蓋在 destwin 上方。 窗口的大小不必相同,此時(shí)只有重疊的區域會(huì )被復制。 此復制是破壞性的,這意味著(zhù)當前背景字符會(huì )覆蓋掉 destwin 的舊內容。
為了獲得對被復制區域的細粒度控制,可以使用
overwrite()
的第二種形式。 sminrow 和 smincol 是源窗口的左上角坐標,而其他變量則在目標窗口中標記出一個(gè)矩形。
- window.refresh([pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol])?
立即更新顯示(將實(shí)際屏幕與之前的繪制/刪除方法進(jìn)行同步)。
6 個(gè)可選參數僅在窗口為使用
newpad()
創(chuàng )建的面板時(shí)可被指定。 需要額外的形參來(lái)指定所涉及到的是面板和屏幕的哪一部分。 pminrow 和 pmincol 指定要在面板中顯示的矩形的左上角。 sminrow, smincol, smaxrow 和 smaxcol 指定要在屏幕中顯示的矩形的邊。 要在面板中顯示的矩形的右下角是根據屏幕坐標計算出來(lái)的,由于矩形的大小必須相同。 兩個(gè)矩形都必須完全包含在其各自的結構之內。 負的 pminrow, pmincol, sminrow 或 smincol 值會(huì )被視為將它們設為零值。
- window.resize(nlines, ncols)?
為 curses 窗口重新分配存儲空間以將其尺寸調整為指定的值。 如果任一維度的尺寸大于當前值,則窗口的數據將以具有合并了當前背景渲染(由
bkgdset()
設置)的空白來(lái)填充。
- window.scroll([lines=1])?
將屏幕或滾動(dòng)區域向上滾動(dòng) lines 行。
- window.scrollok(flag)?
控制當一個(gè)窗口的光標移出窗口或滾動(dòng)區域邊緣時(shí)會(huì )發(fā)生什么,這可能是在底端行執行換行操作,或者在最后一行輸入最后一個(gè)字符導致的結果。 如果 flag 為
False
,光標會(huì )留在底端行。 如果 flag 為True
,窗口會(huì )向上滾動(dòng)一行。 請注意為了在終端上獲得實(shí)際的滾動(dòng)效果,還需要調用idlok()
。
- window.setscrreg(top, bottom)?
設置從 top 行至 bottom 行的滾動(dòng)區域。 所有滾動(dòng)操作將在此區域中進(jìn)行。
- window.standend()?
關(guān)閉 standout 屬性。 在某些終端上此操作會(huì )有關(guān)閉所有屬性的副作用。
- window.standout()?
啟用屬性 A_STANDOUT。
- window.subpad(begin_y, begin_x)?
- window.subpad(nlines, ncols, begin_y, begin_x)
返回一個(gè)子窗口,其左上角位于
(begin_y, begin_x)
,并且其寬度/高度為 ncols/nlines。
- window.subwin(begin_y, begin_x)?
- window.subwin(nlines, ncols, begin_y, begin_x)
返回一個(gè)子窗口,其左上角位于
(begin_y, begin_x)
,并且其寬度/高度為 ncols/nlines。默認情況下,子窗口將從指定位置擴展到窗口的右下角。
- window.syncup()?
觸碰已在窗口中被改變的此窗口的各個(gè)上級窗口中的所有位置。
- window.timeout(delay)?
為窗口設置阻塞或非阻塞讀取行為。 如果 delay 為負值,則會(huì )使用阻塞讀?。ㄟ@將無(wú)限期地等待輸入)。 如果 delay 為零,則會(huì )使用非阻塞讀取,并且當沒(méi)有輸入在等待時(shí)
getch()
將返回-1
。 如果 delay 為正值,則getch()
將阻塞 delay 毫秒,并且當此延時(shí)結束時(shí)仍無(wú)輸入將返回-1
。
- window.touchline(start, count[, changed])?
假定從行 start 開(kāi)始的 count 行已被更改。 如果提供了 changed,它將指明是將受影響的行標記為已更改 (changed
=True
) 還是未更改 (changed=False
)。
- window.touchwin()?
假定整個(gè)窗口已被更改,其目的是用于繪制優(yōu)化。
- window.vline(ch, n)?
- window.vline(y, x, ch, n)
顯示一條起始于
(y, x)
長(cháng)度為 n 個(gè)字符 ch 的垂直線(xiàn)。
常量?
curses
模塊定義了以下數據成員:
- curses.version?
一個(gè)代表當前模塊版本的字節串對象。 也作
__version__
。
- curses.ncurses_version?
一個(gè)具名元組,它包含構成 ncurses 庫版本號的三個(gè)數字: major, minor 和 patch。 三個(gè)值均為整數。 三個(gè)值也可通過(guò)名稱(chēng)來(lái)訪(fǎng)問(wèn),因此
curses.ncurses_version[0]
等價(jià)于curses.ncurses_version.major
,依此類(lèi)推。可用性:如果使用了 ncurses 庫。
3.8 新版功能.
有些常量可用于指定字符單元屬性。 實(shí)際可用的常量取決于具體的系統。
屬性 |
含意 |
---|---|
|
備用字符集模式 |
|
閃爍模式 |
|
粗體模式 |
|
暗淡模式 |
|
不可見(jiàn)或空白模式 |
|
斜體模式 |
|
正常屬性 |
|
保護模式 |
|
反轉背景色和前景色 |
|
突出模式 |
|
下劃線(xiàn)模式 |
|
水平突出顯示 |
|
左高亮 |
|
底部高亮 |
|
右高亮 |
|
頂部高亮 |
|
垂直突出顯示 |
|
用于提取字符的位掩碼 |
3.7 新版功能: A_ITALIC
was added.
有幾個(gè)常量可用于提取某些方法返回的相應屬性。
位掩碼 |
含意 |
---|---|
|
用于提取屬性的位掩碼 |
|
用于提取字符的位掩碼 |
|
用于提取顏色對字段信息的位掩碼 |
鍵由名稱(chēng)以 KEY_
開(kāi)頭的整數常量引用。確切的可用鍵取決于系統。
關(guān)鍵常數 |
鍵 |
---|---|
|
最小鍵值 |
|
中斷鍵(不可靠) |
|
向下箭頭 |
|
向上箭頭 |
|
向左箭頭 |
|
向右箭頭 |
|
Home 鍵 (上+左箭頭) |
|
退格(不可靠) |
|
功能鍵。 支持至多 64 個(gè)功能鍵。 |
|
功能鍵 n 的值 |
|
刪除行 |
|
插入行 |
|
刪除字符 |
|
插入字符或進(jìn)入插入模式 |
|
退出插入字符模式 |
|
清空屏幕 |
|
清空至屏幕底部 |
|
清空至行尾 |
|
向前滾動(dòng) 1 行 |
|
向后滾動(dòng) 1 行 (反轉) |
|
下一頁(yè) |
|
上一頁(yè) |
|
設置制表符 |
|
清除制表符 |
|
清除所有制表符 |
|
回車(chē)或發(fā)送 (不可靠) |
|
軟 (部分) 重置 (不可靠) |
|
重置或硬重置 (不可靠) |
|
打印 |
|
Home 向下或到底 (左下) |
|
鍵盤(pán)的左上角 |
|
鍵盤(pán)的右上角 |
|
鍵盤(pán)的中心 |
|
鍵盤(pán)左下方 |
|
鍵盤(pán)右下方 |
|
回退制表符 |
|
Beg (開(kāi)始) |
|
取消 |
|
關(guān)閉 |
|
Cmd (命令行) |
|
復制 |
|
創(chuàng )建 |
|
End |
|
退出 |
|
查找 |
|
幫助 |
|
標記 |
|
消息 |
|
移動(dòng) |
|
下一個(gè) |
|
打開(kāi) |
|
選項 |
|
Prev (上一個(gè)) |
|
重做 |
|
Ref (引用) |
|
刷新 |
|
替換 |
|
重啟 |
|
恢復 |
|
保存 |
|
Shift + Beg (開(kāi)始) |
|
Shift + Cancel |
|
Shift + Command |
|
Shift + Copy |
|
Shift + Create |
|
Shift + 刪除字符 |
|
Shift + 刪除行 |
|
選擇 |
|
Shift + End |
|
Shift + 清空行 |
|
Shift + 退出 |
|
Shift + 查找 |
|
Shift + 幫助 |
|
Shift + Home |
|
Shift + 輸入 |
|
Shift + 向左箭頭 |
|
Shift + 消息 |
|
Shift + 移動(dòng) |
|
Shift + 下一個(gè) |
|
Shift + 選項 |
|
Shift + 上一個(gè) |
|
Shift + 打印 |
|
Shift + 重做 |
|
Shift + 替換 |
|
Shift + 向右箭頭 |
|
Shift + 恢復 |
|
Shift + 保存 |
|
Shift + 掛起 |
|
Shift + 撤銷(xiāo) |
|
掛起 |
|
撤銷(xiāo)操作 |
|
鼠標事件已發(fā)生 |
|
終端大小改變事件 |
|
最大鍵值 |
在VT100及其軟件仿真(例如X終端仿真器)上,通常至少有四個(gè)功能鍵( KEY_F1
, KEY_F2
, KEY_F3
, KEY_F4
)可用,并且箭頭鍵以明顯的方式映射到 KEY_UP
, KEY_DOWN
, KEY_LEFT
和 KEY_RIGHT
。如果您的機器有一個(gè)PC鍵盤(pán),可以安全地使用箭頭鍵和十二個(gè)功能鍵(舊的PC鍵盤(pán)可能只有十個(gè)功能鍵);此外,以下鍵盤(pán)映射是標準的:
鍵帽 |
常量 |
---|---|
Insert |
KEY_IC |
Delete |
KEY_DC |
Home |
KEY_HOME |
End |
KEY_END |
Page Up |
KEY_PPAGE |
Page Down |
KEY_NPAGE |
下表列出了替代字符集中的字符。 這些字符繼承自 VT100 終端,在 X 終端等軟件模擬器上通常均為可用。 當沒(méi)有可用的圖形時(shí),curses 會(huì )回退為粗糙的可打印 ASCII 近似符號。
備注
只有在調用 initscr()
之后才能使用它們
ACS代碼 |
含意 |
---|---|
|
右上角的別名 |
|
實(shí)心方塊 |
|
正方形 |
|
水平線(xiàn)的別名 |
|
左上角的別名 |
|
頂部 T 型的別名 |
|
底部 T 型 |
|
正方形 |
|
棋盤(pán)(點(diǎn)刻) |
|
向下箭頭 |
|
等級符 |
|
菱形 |
|
大于或等于 |
|
水平線(xiàn) |
|
燈形符號 |
|
向左箭頭 |
|
小于或等于 |
|
左下角 |
|
右下角 |
|
左側 T 型 |
|
不等號 |
|
字母π |
|
正負號 |
|
加號 |
|
向右箭頭 |
|
右側 T 型 |
|
掃描線(xiàn) 1 |
|
掃描線(xiàn)3 |
|
掃描線(xiàn)7 |
|
掃描線(xiàn) 9 |
|
右下角的別名 |
|
垂直線(xiàn)的別名 |
|
右側 T 型的別名 |
|
左下角的別名 |
|
底部 T 型的別名 |
|
左側 T 型的別名 |
|
交叉或大加號的替代名稱(chēng) |
|
英鎊 |
|
頂部 T 型 |
|
向上箭頭 |
|
左上角 |
|
右上角 |
|
垂線(xiàn) |
下表列出了預定義的顏色:
常量 |
顏色 |
---|---|
|
黑色 |
|
藍色 |
|
青色(淺綠藍色) |
|
綠色 |
|
洋紅色(紫紅色) |
|
紅色 |
|
白色 |
|
黃色 |
curses.textpad
--- 用于 curses 程序的文本輸入控件?
curses.textpad
模塊提供了一個(gè) Textbox
類(lèi),該類(lèi)在 curses 窗口中處理基本的文本編輯,支持一組與 Emacs 類(lèi)似的鍵綁定(因此這也適用于 Netscape Navigator, BBedit 6.x, FrameMaker 和許多其他程序)。 該模塊還提供了一個(gè)繪制矩形的函數,適用于容納文本框或其他目的。
curses.textpad
模塊定義了以下函數:
- curses.textpad.rectangle(win, uly, ulx, lry, lrx)?
繪制一個(gè)矩形。 第一個(gè)參數必須為窗口對象;其余參數均為相對于該窗口的坐標值。 第二和第三個(gè)參數為要繪制的矩形的左上角的 y 和 x 坐標值;第四和第五個(gè)參數為其右下角的 y 和 x 坐標值。 將會(huì )使用 VT100/IBM PC 形式的字符在可用的終端上(包括 xterm 和大多數其他軟件終端模擬器)繪制矩形。 在其他情況下則將使用 ASCII 橫杠、豎線(xiàn)和加號繪制。
文本框對象?
你可以通過(guò)如下方式實(shí)例化一個(gè) Textbox
:
- class curses.textpad.Textbox(win)?
返回一個(gè)文本框控件對象。 win 參數必須是一個(gè) curses 窗口 對象,文本框將被包含在其中。 文本框的編輯光標在初始時(shí)位于包含窗口的左上角,坐標值為
(0, 0)
。 實(shí)例的stripspaces
旗標初始時(shí)為啟用。Textbox
對象具有以下方法:- edit([validator])?
這是你通常將使用的入口點(diǎn)。 它接受編輯按鍵直到鍵入了一個(gè)終止按鍵。 如果提供了 validator,它必須是一個(gè)函數。 它將在每次按鍵時(shí)被調用并傳入相應的按鍵作作為形參;命令發(fā)送將在結果上執行。 此方法會(huì )以字符串形式返回窗口內容;是否包括窗口中的空白將受到
stripspaces
屬性的影響。
- do_command(ch)?
處理單個(gè)按鍵命令。以下是支持的特殊按鍵:
按鍵
動(dòng)作
Control-A
轉到窗口的左邊緣。
Control-B
光標向左,如果可能,包含前一行。
Control-D
刪除光標下的字符。
Control-E
前往右邊緣(stripspaces 關(guān)閉時(shí))或者行尾(stripspaces 啟用時(shí))。
Control-F
向右移動(dòng)光標,適當時(shí)換行到下一行。
Control-G
終止,返回窗口內容。
Control-H
向后刪除字符。
Control-J
如果窗口是1行則終止,否則插入換行符。
Control-K
如果行為空,則刪除它,否則清除到行尾。
Control-L
刷新屏幕。
Control-N
光標向下;向下移動(dòng)一行。
Control-O
在光標位置插入一個(gè)空行。
Control-P
光標向上;向上移動(dòng)一行。
如果光標位于無(wú)法移動(dòng)的邊緣,則移動(dòng)操作不執行任何操作。在可能的情況下,支持以下同義詞:
常量
按鍵
KEY_LEFT
Control-B
KEY_RIGHT
Control-F
KEY_UP
Control-P
KEY_DOWN
Control-N
KEY_BACKSPACE
Control-h
所有其他按鍵將被視為插入給定字符并右移的命令(帶有自動(dòng)折行)。
- gather()?
以字符串形式返回窗口內容;是否包括窗口中的空白將受到
stripspaces
成員的影響。
- stripspaces?
此屬性是控制窗口中空白解讀方式的旗標。 當啟用時(shí),每一行的末尾空白會(huì )被忽略;任何將光標定位至末尾空白的光標動(dòng)作都將改為前往該行末尾,并且在收集窗口內容時(shí)將去除末尾空白。