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è)函數或方法的 xy 參數是可選項,它們會(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()?

根據程序員能否改變終端顯示的顏色返回 TrueFalse。

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)分量的強度,此強度值必須介于 0COLORS - 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, 12 表示不可見(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.getsyx()?

將當前虛擬屏幕光標的坐標作為元組 (y, x) 返回。 如果 leaveok 當前為 True,則返回 (-1, -1)。

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 值必須為 1255 之間的數字。 使用 nocbreak() 可退出半延遲模式。

curses.init_color(color_number, r, g, b)?

更改某個(gè)顏色的定義,接受要更改的顏色編號以及三個(gè) RGB 值(表示紅綠藍三分量的強度)。 color_number 值必須為 0COLORS - 1 之間的數字。 r, g, b 值必須為 01000 之間的數字。 當使用 init_color() 時(shí),出現在屏幕上的對應顏色會(huì )立即按照新定義來(lái)更改。 此函數在大多數終端上都是無(wú)操作的;它僅會(huì )在 can_change_color() 返回 True 時(shí)生效。

curses.init_pair(pair_number, fg, bg)?

更改某個(gè)顏色對的定義。 它接受三個(gè)參數:要更改的顏色對編號,前景色編號和背景色編號。 pair_number 值必須為 1COLOR_PAIRS - 1 之間的數字(并且 0 號顏色對固定為黑底白字而無(wú)法更改)。 fgbg 參數必須為 0COLORS - 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.isendwin()?

如果 endwin() 已經(jīng)被調用(即 curses 庫已經(jīng)被撤銷(xiāo)初始化則返回 True。

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)?

如果 flagTrue,則允許輸入 8 比特位的字符。 如果 flagFalse,則只允許 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, QUITSUSP 字符相關(guān)聯(lián)的輸入和輸出隊列的正常刷新將不會(huì )被執行。 如果你希望在處理程序退出后還能繼續輸出,就像沒(méi)有發(fā)生過(guò)中斷一樣,你可能會(huì )想要在信號處理程序中調用 noqiflush()。

curses.noraw()?

退出 raw 模式。 返回具有行緩沖的正常 "cooked" 模式。

curses.pair_content(pair_number)?

返回包含對應于所請求顏色對的元組 (fg, bg)。 pair_number 的值必須在 0COLOR_PAIRS - 1 之間。

curses.pair_number(attr)?

返回通過(guò)屬性值 attr 所設置的顏色對的編號。 color_pair() 是此函數的對應操作。

curses.putp(str)?

等價(jià)于 tputs(str, 1, putchar);為當前終端發(fā)出指定 terminfo 功能的值。 請注意 putp() 的輸出總是前往標準輸出。

curses.qiflush([flag])?

如果 flagFalse,則效果與調用 noqiflush() 相同。 如果 flagTrue 或未提供參數,則在讀取這些控制字符時(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.resetty()?

將終端模式恢復到最后一次調用 savetty() 時(shí)的狀態(tài)。

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.savetty()?

將終端模式的當前狀態(tài)保存在緩沖區中,可供 resetty() 使用。

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.setsyx(y, x)?

將虛擬屏幕光標設置到 y, x。 如果 yx 均為 -1,則 leaveok 將設為 True。

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è)全局變量 COLORSCOLOR_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.ungetch(ch)?

推送 ch 以便讓下一個(gè) getch() 返回該字符。

備注

getch() 被調用之前只能推送一個(gè) ch。

curses.update_lines_cols()?

更新 LINESCOLS。 適用于檢測屏幕大小的手動(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 之前調用它。 當 flagFalse 時(shí),將會(huì )使用在 terminfo 數據庫中指定的行和列的值,即使設置了環(huán)境變量 LINESCOLUMNS (默認使用),或者如果 curses 是在窗口中運行(在此情況下如果未設置 LINESCOLUMNS 則默認行為將是使用窗口大?。?。

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(),但 lsrs 均為 vertchtsbs 均為 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.clear()?

類(lèi)似于 erase(),但還會(huì )導致在下次調用 refresh() 時(shí)整個(gè)窗口被重新繪制。

window.clearok(flag)?

如果 flagTrue,則在下次調用 refresh() 時(shí)將完全清除窗口。

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_ybegin_x 是想對于窗口的初始位置,而不是相對于整個(gè)屏幕。 返回代表所派生窗口的窗口對象。

window.echochar(ch[, attr])?

使用屬性 attr 添加字符 ch,并立即在窗口上調用 refresh()。

window.enclose(y, x)?

檢測給定的相對屏幕的字符-單元格坐標是否被給定的窗口所包圍,返回 TrueFalse。 它適用于確定是哪個(gè)屏幕窗口子集包圍著(zhù)某個(gè)鼠標事件的位置。

在 3.10 版更改: 在之前版本中它會(huì )返回 10 而不是 TrueFalse。

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 (see locale.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)?

如果 flagFalse,curses 將不再考慮使用終端的硬件插入/刪除字符功能;如果 flagTrue,則會(huì )啟用字符插入和刪除。 當 curses 首次初始化時(shí),默認會(huì )啟用字符插入/刪除。

window.idlok(flag)?

如果 flagTrue,curses 將嘗試使用硬件行編輯功能。 否則,行插入/刪除會(huì )被禁用。

window.immedok(flag)?

如果 flagTrue,窗口圖像中的任何改變都會(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.is_wintouched()?

如果指定的窗口自上次調用 refresh() 后發(fā)生了改變則返回 True;否則返回 False。

window.keypad(flag)?

如果 flagTrue,則某些鍵(小鍵盤(pán)鍵、功能鍵等)生成的轉義序列將由 curses 來(lái)解析。 如果 flagFalse,轉義序列將保持在輸入流中的原樣。

window.leaveok(flag)?

如果 flagTrue,則在更新時(shí)光標將停留在原地,而不是在“光標位置”。 這將可以減少光標的移動(dòng)。 在可能的情況下光標將變?yōu)椴豢梢?jiàn)。

如果 flagFalse,光標在更新后將總是位于“光標位置”。

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.nodelay(flag)?

如果 flagTrue,則 getch() 將為非阻塞的。

window.notimeout(flag)?

如果 flagTrue,則轉義序列將不會(huì )發(fā)生超時(shí)。

如果 flagFalse,則在幾毫秒之后,轉義序列將不會(huì )被解析,并將保持在輸入流中的原樣。

window.noutrefresh()?

標記為刷新但保持等待。 此函數會(huì )更新代表預期窗口狀態(tài)的數據結構,但并不強制更新物理屏幕。 要完成后者,請調用 doupdate()。

window.overlay(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol])?

將窗口覆蓋在 destwin 上方。 窗口的大小不必相同,只有重疊的區域會(huì )被復制。 此復制是非破壞性的,這意味著(zhù)當前背景字符不會(huì )覆蓋掉 destwin 的舊內容。

為了獲得對被復制區域的細粒度控制,可以使用 overlay() 的第二種形式。 sminrowsmincol 是源窗口的左上角坐標,而其他變量則在目標窗口中標記出一個(gè)矩形。

window.overwrite(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol])?

將窗口覆蓋在 destwin 上方。 窗口的大小不必相同,此時(shí)只有重疊的區域會(huì )被復制。 此復制是破壞性的,這意味著(zhù)當前背景字符會(huì )覆蓋掉 destwin 的舊內容。

為了獲得對被復制區域的細粒度控制,可以使用 overwrite() 的第二種形式。 sminrowsmincol 是源窗口的左上角坐標,而其他變量則在目標窗口中標記出一個(gè)矩形。

window.putwin(file)?

將關(guān)聯(lián)到窗口的所有數據寫(xiě)入到所提供的文件對象。 此信息可在以后使用 getwin() 函數來(lái)提取。

window.redrawln(beg, num)?

指明從 beg 行開(kāi)始的 num 個(gè)屏幕行已被破壞并且應當在下次 refresh() 調用時(shí)完全重繪。

window.redrawwin()?

觸碰整個(gè)窗口,以使其在下次 refresh() 調用時(shí)完全重繪。

window.refresh([pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol])?

立即更新顯示(將實(shí)際屏幕與之前的繪制/刪除方法進(jìn)行同步)。

6 個(gè)可選參數僅在窗口為使用 newpad() 創(chuàng )建的面板時(shí)可被指定。 需要額外的形參來(lái)指定所涉及到的是面板和屏幕的哪一部分。 pminrowpmincol 指定要在面板中顯示的矩形的左上角。 sminrow, smincol, smaxrowsmaxcol 指定要在屏幕中顯示的矩形的邊。 要在面板中顯示的矩形的右下角是根據屏幕坐標計算出來(lái)的,由于矩形的大小必須相同。 兩個(gè)矩形都必須完全包含在其各自的結構之內。 負的 pminrow, pmincol, sminrowsmincol 值會(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è)字符導致的結果。 如果 flagFalse,光標會(huì )留在底端行。 如果 flagTrue,窗口會(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.syncdown()?

觸碰已在上級窗口上被觸碰的每個(gè)位置。 此例程由 refresh() 調用,因此幾乎從不需要手動(dòng)調用。

window.syncok(flag)?

如果 flagTrue,則 syncup() 會(huì )在窗口發(fā)生改變的任何時(shí)候自動(dòng)被調用。

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.untouchwin()?

將自上次調用 refresh() 以來(lái)窗口中的所有行標記為未改變。

window.vline(ch, n)?
window.vline(y, x, ch, n)

顯示一條起始于 (y, x) 長(cháng)度為 n 個(gè)字符 ch 的垂直線(xiàn)。

常量?

curses 模塊定義了以下數據成員:

curses.ERR?

一些返回整數的 curses 例程,例如 getch(),在失敗時(shí)將返回 ERR。

curses.OK?

一些返回整數的 curses 例程,例如 napms(),在成功時(shí)將返回 OK。

curses.version?

一個(gè)代表當前模塊版本的字節串對象。 也作 __version__。

curses.ncurses_version?

一個(gè)具名元組,它包含構成 ncurses 庫版本號的三個(gè)數字: major, minorpatch。 三個(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í)際可用的常量取決于具體的系統。

屬性

含意

A_ALTCHARSET

備用字符集模式

A_BLINK

閃爍模式

A_BOLD

粗體模式

A_DIM

暗淡模式

A_INVIS

不可見(jiàn)或空白模式

A_ITALIC

斜體模式

A_NORMAL

正常屬性

A_PROTECT

保護模式

A_REVERSE

反轉背景色和前景色

A_STANDOUT

突出模式

A_UNDERLINE

下劃線(xiàn)模式

A_HORIZONTAL

水平突出顯示

A_LEFT

左高亮

A_LOW

底部高亮

A_RIGHT

右高亮

A_TOP

頂部高亮

A_VERTICAL

垂直突出顯示

A_CHARTEXT

用于提取字符的位掩碼

3.7 新版功能: A_ITALIC was added.

有幾個(gè)常量可用于提取某些方法返回的相應屬性。

位掩碼

含意

A_ATTRIBUTES

用于提取屬性的位掩碼

A_CHARTEXT

用于提取字符的位掩碼

A_COLOR

用于提取顏色對字段信息的位掩碼

鍵由名稱(chēng)以 KEY_ 開(kāi)頭的整數常量引用。確切的可用鍵取決于系統。

關(guān)鍵常數

KEY_MIN

最小鍵值

KEY_BREAK

中斷鍵(不可靠)

KEY_DOWN

向下箭頭

KEY_UP

向上箭頭

KEY_LEFT

向左箭頭

KEY_RIGHT

向右箭頭

KEY_HOME

Home 鍵 (上+左箭頭)

KEY_BACKSPACE

退格(不可靠)

KEY_F0

功能鍵。 支持至多 64 個(gè)功能鍵。

KEY_Fn

功能鍵 n 的值

KEY_DL

刪除行

KEY_IL

插入行

KEY_DC

刪除字符

KEY_IC

插入字符或進(jìn)入插入模式

KEY_EIC

退出插入字符模式

KEY_CLEAR

清空屏幕

KEY_EOS

清空至屏幕底部

KEY_EOL

清空至行尾

KEY_SF

向前滾動(dòng) 1 行

KEY_SR

向后滾動(dòng) 1 行 (反轉)

KEY_NPAGE

下一頁(yè)

KEY_PPAGE

上一頁(yè)

KEY_STAB

設置制表符

KEY_CTAB

清除制表符

KEY_CATAB

清除所有制表符

KEY_ENTER

回車(chē)或發(fā)送 (不可靠)

KEY_SRESET

軟 (部分) 重置 (不可靠)

KEY_RESET

重置或硬重置 (不可靠)

KEY_PRINT

打印

KEY_LL

Home 向下或到底 (左下)

KEY_A1

鍵盤(pán)的左上角

KEY_A3

鍵盤(pán)的右上角

KEY_B2

鍵盤(pán)的中心

KEY_C1

鍵盤(pán)左下方

KEY_C3

鍵盤(pán)右下方

KEY_BTAB

回退制表符

KEY_BEG

Beg (開(kāi)始)

KEY_CANCEL

取消

KEY_CLOSE

關(guān)閉

KEY_COMMAND

Cmd (命令行)

KEY_COPY

復制

KEY_CREATE

創(chuàng )建

KEY_END

End

KEY_EXIT

退出

KEY_FIND

查找

KEY_HELP

幫助

KEY_MARK

標記

KEY_MESSAGE

消息

KEY_MOVE

移動(dòng)

KEY_NEXT

下一個(gè)

KEY_OPEN

打開(kāi)

KEY_OPTIONS

選項

KEY_PREVIOUS

Prev (上一個(gè))

KEY_REDO

重做

KEY_REFERENCE

Ref (引用)

KEY_REFRESH

刷新

KEY_REPLACE

替換

KEY_RESTART

重啟

KEY_RESUME

恢復

KEY_SAVE

保存

KEY_SBEG

Shift + Beg (開(kāi)始)

KEY_SCANCEL

Shift + Cancel

KEY_SCOMMAND

Shift + Command

KEY_SCOPY

Shift + Copy

KEY_SCREATE

Shift + Create

KEY_SDC

Shift + 刪除字符

KEY_SDL

Shift + 刪除行

KEY_SELECT

選擇

KEY_SEND

Shift + End

KEY_SEOL

Shift + 清空行

KEY_SEXIT

Shift + 退出

KEY_SFIND

Shift + 查找

KEY_SHELP

Shift + 幫助

KEY_SHOME

Shift + Home

KEY_SIC

Shift + 輸入

KEY_SLEFT

Shift + 向左箭頭

KEY_SMESSAGE

Shift + 消息

KEY_SMOVE

Shift + 移動(dòng)

KEY_SNEXT

Shift + 下一個(gè)

KEY_SOPTIONS

Shift + 選項

KEY_SPREVIOUS

Shift + 上一個(gè)

KEY_SPRINT

Shift + 打印

KEY_SREDO

Shift + 重做

KEY_SREPLACE

Shift + 替換

KEY_SRIGHT

Shift + 向右箭頭

KEY_SRSUME

Shift + 恢復

KEY_SSAVE

Shift + 保存

KEY_SSUSPEND

Shift + 掛起

KEY_SUNDO

Shift + 撤銷(xiāo)

KEY_SUSPEND

掛起

KEY_UNDO

撤銷(xiāo)操作

KEY_MOUSE

鼠標事件已發(fā)生

KEY_RESIZE

終端大小改變事件

KEY_MAX

最大鍵值

在VT100及其軟件仿真(例如X終端仿真器)上,通常至少有四個(gè)功能鍵( KEY_F1, KEY_F2, KEY_F3, KEY_F4 )可用,并且箭頭鍵以明顯的方式映射到 KEY_UP, KEY_DOWN, KEY_LEFTKEY_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代碼

含意

ACS_BBSS

右上角的別名

ACS_BLOCK

實(shí)心方塊

ACS_BOARD

正方形

ACS_BSBS

水平線(xiàn)的別名

ACS_BSSB

左上角的別名

ACS_BSSS

頂部 T 型的別名

ACS_BTEE

底部 T 型

ACS_BULLET

正方形

ACS_CKBOARD

棋盤(pán)(點(diǎn)刻)

ACS_DARROW

向下箭頭

ACS_DEGREE

等級符

ACS_DIAMOND

菱形

ACS_GEQUAL

大于或等于

ACS_HLINE

水平線(xiàn)

ACS_LANTERN

燈形符號

ACS_LARROW

向左箭頭

ACS_LEQUAL

小于或等于

ACS_LLCORNER

左下角

ACS_LRCORNER

右下角

ACS_LTEE

左側 T 型

ACS_NEQUAL

不等號

ACS_PI

字母π

ACS_PLMINUS

正負號

ACS_PLUS

加號

ACS_RARROW

向右箭頭

ACS_RTEE

右側 T 型

ACS_S1

掃描線(xiàn) 1

ACS_S3

掃描線(xiàn)3

ACS_S7

掃描線(xiàn)7

ACS_S9

掃描線(xiàn) 9

ACS_SBBS

右下角的別名

ACS_SBSB

垂直線(xiàn)的別名

ACS_SBSS

右側 T 型的別名

ACS_SSBB

左下角的別名

ACS_SSBS

底部 T 型的別名

ACS_SSSB

左側 T 型的別名

ACS_SSSS

交叉或大加號的替代名稱(chēng)

ACS_STERLING

英鎊

ACS_TTEE

頂部 T 型

ACS_UARROW

向上箭頭

ACS_ULCORNER

左上角

ACS_URCORNER

右上角

ACS_VLINE

垂線(xiàn)

下表列出了預定義的顏色:

常量

顏色

COLOR_BLACK

黑色

COLOR_BLUE

藍色

COLOR_CYAN

青色(淺綠藍色)

COLOR_GREEN

綠色

COLOR_MAGENTA

洋紅色(紫紅色)

COLOR_RED

紅色

COLOR_WHITE

白色

COLOR_YELLOW

黃色

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í)將去除末尾空白。