curses — 字元單元顯示終端處理

原始碼: Lib/curses


curses 模組提供了一個 curses 庫的介面,它是可移植高階終端處理的事實標準。

雖然 curses 在 Unix 環境中使用最為廣泛,但也有適用於 Windows、DOS 以及可能其他系統的版本。此擴充套件模組旨在匹配 ncurses 的 API,ncurses 是託管在 Linux 和 Unix 的 BSD 變體上的開源 curses 庫。

可用性:非 Android、非 iOS、非 WASI。

此模組在 移動平臺WebAssembly 平臺 上不受支援。

註解

每當文件中提到字元時,它可以指定為整數、單字元 Unicode 字串或單位元組位元組字串。

每當文件中提到字串時,它可以指定為 Unicode 字串或位元組字串。

參見

模組 curses.ascii

用於處理 ASCII 字元的實用工具,無論您的語言環境設定如何。

模組 curses.panel

一個面板堆疊擴充套件,它為 curses 視窗添加了深度。

模組 curses.textpad

用於 curses 的可編輯文字小部件,支援類似 Emacs 的繫結。

使用 Python 進行 Curses 程式設計

關於使用 Python 進行 curses 程式設計的教程資料,作者為 Andrew Kuchling 和 Eric Raymond。

函式

模組 curses 定義了以下異常

exception curses.error

當 curses 庫函式返回錯誤時引發的異常。

註解

當函式或方法的 xy 引數為可選時,它們預設為當前游標位置。當 attr 為可選時,它預設為 A_NORMAL

模組 curses 定義了以下函式

curses.baudrate()

返回終端的輸出速度,單位為位元每秒。在軟體終端模擬器上,它將有一個固定的高值。包含此函式是出於歷史原因;在過去,它被用於編寫時間延遲的輸出迴圈,有時也用於根據線路速度更改介面。

curses.beep()

發出短促的提示音。

curses.can_change_color()

返回 TrueFalse,取決於程式設計師是否可以更改終端顯示的顏色。

curses.cbreak()

進入 cbreak 模式。在 cbreak 模式(有時稱為“稀有”模式)下,正常的 tty 行緩衝被關閉,並且可以逐個讀取字元。但是,與原始模式不同,特殊字元(中斷、退出、掛起和流控制)保留其對 tty 驅動程式和呼叫程式的影響。先呼叫 raw() 然後呼叫 cbreak() 會使終端處於 cbreak 模式。

curses.color_content(color_number)

返回顏色 color_number 中紅色、綠色和藍色 (RGB) 分量的強度,該值必須介於 0COLORS - 1 之間。返回一個 3 元組,其中包含給定顏色的 R、G、B 值,該值將在 0 (無分量)和 1000 (最大分量)之間。

curses.color_pair(pair_number)

返回用於以指定顏色對顯示文字的屬性值。僅支援前 256 個顏色對。此屬性值可以與 A_STANDOUTA_REVERSE 和其他 A_* 屬性組合使用。 pair_number() 是此函式的對應函式。

curses.curs_set(visibility)

設定游標狀態。visibility 可以設定為 012,分別表示不可見、正常或非常可見。如果終端支援請求的可見性,則返回先前的游標狀態;否則引發異常。在許多終端上,“可見”模式是下劃線游標,“非常可見”模式是塊游標。

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() 基礎更新物理螢幕以匹配虛擬螢幕。

在對視窗執行諸如 addstr() 之類的寫入操作後,可以透過 noutrefresh() 呼叫更新虛擬螢幕。普通的 refresh() 呼叫只是 noutrefresh() 後跟 doupdate();如果需要更新多個視窗,則可以透過對所有視窗發出 noutrefresh() 呼叫,然後發出單個 doupdate() 來提高效能並可能減少螢幕閃爍。

curses.echo()

進入回顯模式。在回顯模式下,每個輸入的字元都會在輸入時回顯到螢幕上。

curses.endwin()

取消初始化庫,並將終端返回正常狀態。

curses.erasechar()

將使用者當前擦除字元返回為一個單位元組位元組物件。在 Unix 作業系統下,這是 curses 程式的控制 tty 的一個屬性,而不是由 curses 庫本身設定的。

curses.filter()

如果使用 filter() 例程,則必須在呼叫 initscr() 之前呼叫它。效果是,在這些呼叫期間,LINES 被設定為 1;停用功能 clearcupcudcud1cuu1cuuvpa;並且 home 字串被設定為 cr 的值。效果是將游標限制在當前行,螢幕更新也是如此。這可以用於啟用一次一個字元的行編輯,而無需觸及螢幕的其餘部分。

curses.flash()

閃爍螢幕。即,將其更改為反相顯示,然後在短時間內改回。有些人喜歡這種“可視響鈴”作為 beep() 發出的聲音提示的替代方案。

curses.flushinp()

重新整理所有輸入緩衝區。這將丟棄使用者鍵入的、尚未被程式處理的所有預輸入。

curses.getmouse()

getch() 返回 KEY_MOUSE 以指示滑鼠事件後,應呼叫此方法以檢索排隊的滑鼠事件,該事件表示為 5 元組 (id, x, y, z, bstate)id 是用於區分多個裝置的 ID 值,xyz 是事件的座標。(z 當前未使用。)bstate 是一個整數值,其位將被設定以指示事件的型別,並且將是以下一個或多個常量的按位或運算結果,其中 n 是從 1 到 5 的按鈕編號:BUTTONn_PRESSEDBUTTONn_RELEASEDBUTTONn_CLICKEDBUTTONn_DOUBLE_CLICKEDBUTTONn_TRIPLE_CLICKEDBUTTON_SHIFTBUTTON_CTRLBUTTON_ALT

在 3.10 版本中更改: 如果底層 curses 庫提供了 BUTTON5_* 常量,則現在會公開這些常量。

curses.getsyx()

以元組 (y, x) 的形式返回虛擬螢幕游標的當前座標。如果 leaveok 當前為 True,則返回 (-1, -1)

curses.getwin(file)

讀取先前呼叫 window.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 模式,因為使用者鍵入的字元可以立即供程式使用。但是,在阻塞 tenths 個十分之一秒後,如果未鍵入任何內容,則會引發異常。tenths 的值必須是介於 1255 之間的數字。使用 nocbreak() 離開半延遲模式。

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

更改顏色的定義,接受要更改的顏色編號,然後是三個 RGB 值(分別表示紅色、綠色和藍色分量的數量)。color_number 的值必須介於 0COLORS - 1 之間。rgb 的每個值都必須是介於 01000 之間的值。當使用 init_color() 時,螢幕上該顏色的所有出現都將立即更改為新定義。此函式在大多數終端上是空操作;只有當 can_change_color() 返回 True 時,它才處於活動狀態。

curses.init_pair(pair_number, fg, bg)

更改顏色對的定義。它接受三個引數:要更改的顏色對的編號、前景色編號和背景色編號。pair_number 的值必須在 1COLOR_PAIRS - 1 之間(0 號顏色對固定為黑底白字,無法更改)。fgbg 引數的值必須在 0COLORS - 1 之間,或者在呼叫 use_default_colors() 後,可以為 -1。如果顏色對之前已初始化,螢幕將被重新整理,並且該顏色對的所有例項都將更改為新的定義。

curses.initscr()

初始化庫。返回一個代表整個螢幕的 視窗 物件。

註解

如果開啟終端時發生錯誤,底層 curses 庫可能會導致直譯器退出。

curses.is_term_resized(nlines, ncols)

如果 resize_term() 將修改視窗結構,則返回 True,否則返回 False

curses.isendwin()

如果已呼叫 endwin()(即 curses 庫已取消初始化),則返回 True

curses.keyname(k)

以位元組物件的形式返回編號為 k 的鍵的名稱。生成可列印 ASCII 字元的鍵的名稱是該鍵的字元。控制鍵組合的名稱是一個雙位元組位元組物件,由一個插入符號 (b'^') 後跟相應的可列印 ASCII 字元組成。alt 鍵組合 (128–255) 的名稱是一個位元組物件,由字首 b'M-' 後跟相應的 ASCII 字元的名稱組成。

curses.killchar()

以單位元組位元組物件的形式返回使用者當前的行刪除字元。在 Unix 作業系統下,這是 curses 程式的控制 tty 的屬性,不由 curses 庫本身設定。

curses.longname()

返回一個位元組物件,其中包含描述當前終端的 terminfo 長名稱欄位。詳細描述的最大長度為 128 個字元。僅在呼叫 initscr() 後定義。

curses.meta(flag)

如果 flagTrue,則允許輸入 8 位字元。如果 flagFalse,則僅允許輸入 7 位字元。

curses.mouseinterval(interval)

設定按下和釋放事件之間經過的最大時間(以毫秒為單位),以便將它們識別為單擊,並返回之前的間隔值。預設值為 200 毫秒,或五分之一秒。

curses.mousemask(mousemask)

設定要報告的滑鼠事件,並返回一個元組 (availmask, oldmask)availmask 指示可以報告哪些指定的滑鼠事件;完全失敗時,它返回 0oldmask 是給定視窗的滑鼠事件掩碼的先前值。如果從未呼叫此函式,則永遠不會報告滑鼠事件。

curses.napms(ms)

休眠 ms 毫秒。

curses.newpad(nlines, ncols)

建立並返回一個指向具有給定行數和列數的新 pad 資料結構的指標。將 pad 作為視窗物件返回。

pad 類似於視窗,只是它不受螢幕大小的限制,並且不一定與螢幕的特定部分相關聯。當需要一個大視窗,並且一次只有一個視窗的一部分在螢幕上時,可以使用 pad。不會發生 pad 的自動重新整理(例如,來自滾動或輸入的回顯)。pad 的 refresh()noutrefresh() 方法需要 6 個引數來指定要顯示的 pad 的部分以及用於顯示的螢幕上的位置。引數為 pminrowpmincolsminrowsmincolsmaxrowsmaxcolp 引數引用要顯示的 pad 區域的左上角,s 引數定義螢幕上的一個裁剪框,pad 區域將在其中顯示。

curses.newwin(nlines, ncols)
curses.newwin(nlines, ncols, begin_y, begin_x)

返回一個新的 視窗,其左上角位於 (begin_y, begin_x),其高度/寬度為 nlines/ncols

預設情況下,視窗將從指定位置延伸到螢幕的右下角。

curses.nl()

進入換行模式。此模式在輸入時將回車鍵轉換為換行符,並在輸出時將換行符轉換為回車符和換行符。換行模式最初處於開啟狀態。

curses.nocbreak()

離開 cbreak 模式。返回帶有行緩衝的正常“熟”模式。

curses.noecho()

離開回顯模式。輸入字元的回顯被關閉。

curses.nonl()

離開換行模式。停用輸入時將回車符轉換為換行符,並停用輸出時將換行符轉換為換行符/回車符的底層轉換(但這不會更改 addch('\n') 的行為,它始終在虛擬螢幕上執行等效的回車符和換行符操作)。關閉轉換後,curses 有時可以稍微加快垂直移動速度;此外,它將能夠檢測輸入的回車鍵。

curses.noqiflush()

當使用 noqiflush() 例程時,與 INTRQUITSUSP 字元關聯的輸入和輸出佇列的正常重新整理將不會執行。 如果您希望在處理程式退出後,輸出像中斷沒有發生一樣繼續,您可能需要在訊號處理程式中呼叫 noqiflush()

curses.noraw()

離開原始模式。返回到帶有行緩衝的正常“熟”模式。

curses.pair_content(pair_number)

返回一個元組 (fg, bg),其中包含請求的顏色對的顏色。pair_number 的值必須介於 0COLOR_PAIRS - 1 之間。

curses.pair_number(attr)

返回由屬性值 attr 設定的顏色對的編號。 color_pair() 是此函式的對應函式。

curses.putp(str)

等效於 tputs(str, 1, putchar);為當前終端發出指定的 terminfo 功能的值。請注意,putp() 的輸出始終傳送到標準輸出。

curses.qiflush([flag])

如果 flagFalse,則效果與呼叫 noqiflush() 相同。如果 flagTrue,或者未提供引數,則在讀取這些控制字元時將重新整理佇列。

curses.raw()

進入原始模式。在原始模式下,正常的行緩衝和中斷、退出、掛起以及流控制鍵的處理將被關閉;字元將逐個呈現給 curses 輸入函式。

curses.reset_prog_mode()

將終端恢復到“程式”模式,如之前透過 def_prog_mode() 儲存的那樣。

curses.reset_shell_mode()

將終端恢復到“shell”模式,如之前透過 def_shell_mode() 儲存的那樣。

curses.resetty()

將終端模式的狀態恢復到上次呼叫 savetty() 時的狀態。

curses.resize_term(nlines, ncols)

resizeterm() 使用的後端函式,執行大部分工作;在調整視窗大小時,resize_term() 會用空格填充擴充套件的區域。呼叫應用程式應使用適當的資料填充這些區域。resize_term() 函式嘗試調整所有視窗的大小。但是,由於 pad 的呼叫約定,如果不與應用程式進行額外的互動,則無法調整這些視窗的大小。

curses.resizeterm(nlines, ncols)

將標準視窗和當前視窗的大小調整為指定的尺寸,並調整 curses 庫使用的其他用於記錄視窗尺寸的簿記資料(特別是 SIGWINCH 處理程式)。

curses.savetty()

將終端模式的當前狀態儲存在緩衝區中,可供 resetty() 使用。

curses.get_escdelay()

檢索由 set_escdelay() 設定的值。

在 3.9 版本中新增。

curses.set_escdelay(ms)

設定在讀取跳脫字元後等待的毫秒數,以區分鍵盤上輸入的單個跳脫字元與游標和功能鍵傳送的轉義序列。

在 3.9 版本中新增。

curses.get_tabsize()

檢索由 set_tabsize() 設定的值。

在 3.9 版本中新增。

curses.set_tabsize(size)

設定當 curses 庫將製表符轉換為空格並將其新增到視窗時使用的列數。

在 3.9 版本中新增。

curses.setsyx(y, x)

將虛擬螢幕游標設定為 y, x。如果 yx 都為 -1,則 leaveok 將設定為 True

curses.setupterm(term=None, fd=-1)

初始化終端。 term 是一個給出終端名稱的字串,或者為 None;如果省略或為 None,則將使用 TERM 環境變數的值。fd 是將向其傳送任何初始化序列的檔案描述符;如果未提供或為 -1,則將使用 sys.stdout 的檔案描述符。

curses.start_color()

如果程式設計師想要使用顏色,並且在呼叫任何其他顏色操作例程之前,必須呼叫此函式。 在 initscr() 之後立即呼叫此例程是一個好習慣。

start_color() 初始化八種基本顏色(黑色、紅色、綠色、黃色、藍色、洋紅色、青色和白色),以及 curses 模組中的兩個全域性變數 COLORSCOLOR_PAIRS,其中分別包含終端支援的最大顏色數和顏色對數。它還會將終端上的顏色恢復為終端剛啟動時的值。

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 不是 terminfo “字串功能”,或者被取消或在終端描述中不存在,則返回 None

curses.tparm(str[, ...])

使用提供的引數例項化位元組物件 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.ungetch(ch)

推送 ch,以便下一次呼叫 getch() 時將返回它。

註解

在呼叫 getch() 之前,只能推送一個 ch

curses.update_lines_cols()

更新 LINESCOLS 模組變數。 用於檢測手動螢幕大小調整很有用。

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 之前呼叫。 當 flagFalse 時,將使用 terminfo 資料庫中指定的行和列的值,即使設定了環境變數 LINESCOLUMNS(預設使用),或者 curses 在視窗中執行時(在這種情況下,如果未設定 LINESCOLUMNS,預設行為將是使用視窗大小)。

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 模式,關閉回顯,啟用終端鍵盤,並在終端支援顏色時初始化顏色。退出時(無論是正常退出還是由於異常退出),它會恢復 cooked 模式,開啟回顯,並停用終端鍵盤。

視窗物件

視窗物件,如上面 initscr()newwin() 返回的物件,具有以下方法和屬性

window.addch(ch[, attr])
window.addch(y, x, ch[, attr])

使用屬性 attr(y, x) 處繪製字元 ch,覆蓋之前在該位置繪製的任何字元。預設情況下,字元位置和屬性是視窗物件的當前設定。

註解

在視窗、子視窗或 pad 外部寫入會引發 curses.error。嘗試寫入視窗、子視窗或 pad 的右下角會導致在列印字元後引發異常。

window.addnstr(str, n[, attr])
window.addnstr(y, x, str, n[, attr])

使用屬性 attr(y, x) 處繪製字元字串 str 的最多 n 個字元,覆蓋顯示器上之前的內容。

window.addstr(str[, attr])
window.addstr(y, x, str[, attr])

使用屬性 attr(y, x) 處繪製字元字串 str,覆蓋顯示器上之前的內容。

註解

  • 在視窗、子視窗或 pad 外部寫入會引發 curses.error。嘗試寫入視窗、子視窗或 pad 的右下角會導致在列印字串後引發異常。

  • 此 Python 模組的後端 ncurses 中的一個 bug 會在調整視窗大小時導致 SegFault。這在 ncurses-6.1-20190511 中已修復。如果您被困在使用早期版本的 ncurses,如果您不使用嵌入換行符的 str 呼叫 addstr(),則可以避免觸發此問題。相反,請為每行單獨呼叫 addstr()

window.attroff(attr)

從應用於當前視窗所有寫入操作的“背景”集中刪除屬性 attr

window.attron(attr)

將屬性 attr 新增到應用於當前視窗所有寫入操作的“背景”集中。

window.attrset(attr)

將“背景”屬性集設定為 attr。此集最初為 0(無屬性)。

window.bkgd(ch[, attr])

將視窗的背景屬性設定為字元 ch,屬性為 attr。然後,此更改將應用於該視窗中的每個字元位置。

  • 視窗中每個字元的屬性都會更改為新的背景屬性。

  • 前一個背景字元出現的任何位置都會更改為新的背景字元。

window.bkgdset(ch[, attr])

設定視窗的背景。視窗的背景由一個字元和屬性的任意組合組成。背景的屬性部分與寫入視窗的所有非空白字元組合(進行或運算)。背景的字元和屬性部分都與空白字元組合。背景成為字元的屬性,並隨字元一起移動,進行任何滾動和插入/刪除行/字元操作。

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.box([vertch, horch])

類似於 border(),但 lsrs 都是 vertch,而 tsbs 都是 horch。此函式始終使用預設的角字元。

window.chgat(attr)
window.chgat(num, attr)
window.chgat(y, x, attr)
window.chgat(y, x, num, attr)

設定當前游標位置或指定位置 (y, x)num個字元的屬性。如果未提供 numnum-1,則屬性將應用於該行末尾的所有字元。如果提供了位置,此函式會將游標移動到位置 (y, x)。更改的行將使用 touchline() 方法進行標記,以便在下次視窗重新整理時重新顯示內容。

window.clear()

類似於 erase(),但也會在下次呼叫 refresh() 時導致整個視窗重繪。

window.clearok(flag)

如果 flagTrue,則下次呼叫 refresh() 將完全清除視窗。

window.clrtobot()

從游標處擦除到視窗末尾:刪除游標下方的所有行,然後執行相當於 clrtoeol() 的操作。

window.clrtoeol()

從游標處擦除到行末。

window.cursyncup()

更新視窗的所有父視窗的當前游標位置,以反映視窗的當前游標位置。

window.delch([y, x])

刪除 (y, x) 處的任何字元。

window.deleteln()

刪除游標下的行。所有後續行都向上移動一行。

window.derwin(begin_y, begin_x)
window.derwin(nlines, ncols, begin_y, begin_x)

“派生視窗”的縮寫,derwin() 與呼叫 subwin() 相同,只是 begin_ybegin_x 是相對於視窗原點的,而不是相對於整個螢幕的。返回派生視窗的視窗物件。

window.echochar(ch[, attr])

新增具有屬性 attr 的字元 ch,並立即在視窗上呼叫 refresh()

window.enclose(y, x)

測試給定的螢幕相關字元單元座標對是否被給定的視窗包圍,返回 TrueFalse。它對於確定螢幕視窗的哪個子集包圍滑鼠事件的位置非常有用。

在 3.10 版本中更改: 之前它返回 10 而不是 TrueFalse

window.encoding

用於編碼方法引數(Unicode 字串和字元)的編碼。當建立子視窗時,例如使用 window.subwin(),編碼屬性會從父視窗繼承。預設情況下,使用當前區域設定編碼(請參閱 locale.getencoding())。

3.3 版本新增。

window.erase()

清除視窗。

window.getbegyx()

返回左上角座標的元組 (y, x)

window.getbkgd()

返回給定視窗的當前背景字元/屬性對。

window.getch([y, x])

獲取一個字元。請注意,返回的整數一定在 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)

從使用者讀取一個位元組物件,具有基本的行編輯功能。

window.getyx()

返回相對於視窗左上角的當前游標位置的元組 (y, x)

window.hline(ch, n)
window.hline(y, x, ch, n)

顯示一條從 (y, x) 開始,長度為 n,由字元 ch 組成的水平線。

window.idcok(flag)

如果 flagFalse,則 curses 不再考慮使用終端的硬體插入/刪除字元功能;如果 flagTrue,則啟用字元插入和刪除。當 curses 首次初始化時,預設情況下啟用字元插入/刪除。

window.idlok(flag)

如果 flagTruecurses 將嘗試使用硬體行編輯功能。否則,停用行插入/刪除。

window.immedok(flag)

如果 flagTrue,則視窗影像中的任何更改都會自動導致視窗重新整理;您不再需要自己呼叫 refresh()。但是,由於重複呼叫 wrefresh,可能會嚴重降低效能。預設情況下,此選項被停用。

window.inch([y, x])

返回視窗中給定位置的字元。低 8 位是字元本身,高位是屬性。

window.insch(ch[, attr])
window.insch(y, x, ch[, attr])

(y, x) 處繪製字元 ch,屬性為 attr,並將從位置 x 開始的行向右移動一個字元。

window.insdelln(nlines)

在指定視窗的當前行上方插入 nlines 行。底部 nlines 行丟失。對於負數 nlines,刪除從游標下的那一行開始的 nlines 行,並將剩餘行向上移動。底部 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)

如果自上次呼叫 refresh() 以來指定的行被修改過,則返回 True;否則返回 False。如果 line 對於給定的視窗無效,則引發 curses.error 異常。

window.is_wintouched()

如果自上次呼叫 refresh() 以來指定的視窗被修改過,則返回 True;否則返回 False

window.keypad(flag)

如果 flagTrue,則由某些鍵(小鍵盤、功能鍵)生成的轉義序列將由 curses 解釋。如果 flagFalse,則轉義序列將按原樣保留在輸入流中。

window.leaveok(flag)

如果 flagTrue,則游標在更新時會留在原處,而不是在“游標位置”。這可以在可能的情況下減少游標移動。如果可能,游標將會被設定為不可見。

如果 flagFalse,則游標在更新後始終位於“游標位置”。

window.move(new_y, new_x)

將游標移動到 (new_y, new_x)

window.mvderwin(y, x)

將視窗在其父視窗內移動。視窗的螢幕相對引數不會改變。此例程用於在螢幕上的同一物理位置顯示父視窗的不同部分。

window.mvwin(new_y, new_x)

移動視窗,使其左上角位於 (new_y, new_x)

window.nodelay(flag)

如果 flagTruegetch() 將是非阻塞的。

window.notimeout(flag)

如果 flagTrue,則轉義序列不會超時。

如果 flagFalse,則在幾毫秒後,轉義序列將不會被解釋,並將按原樣保留在輸入流中。

window.noutrefresh()

標記為重新整理但等待。此函式更新表示視窗所需狀態的資料結構,但不會強制更新物理螢幕。要實現這一點,請呼叫 doupdate()

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

將視窗覆蓋在 destwin 之上。視窗不需要大小相同,只複製重疊區域。此複製是非破壞性的,這意味著當前的背景字元不會覆蓋 destwin 的舊內容。

要對複製區域進行細粒度控制,可以使用 overlay() 的第二種形式。sminrowsmincol 是源視窗的左上角座標,其他變數標記目標視窗中的一個矩形。

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

將視窗覆蓋在 destwin 之上。視窗不需要大小相同,在這種情況下,只複製重疊區域。此複製是破壞性的,這意味著當前的背景字元會覆蓋 destwin 的舊內容。

要對複製區域進行細粒度控制,可以使用 overwrite() 的第二種形式。sminrowsmincol 是源視窗的左上角座標,其他變數標記目標視窗中的一個矩形。

window.putwin(file)

將與視窗關聯的所有資料寫入提供的檔案物件。可以使用 getwin() 函式稍後檢索此資訊。

window.redrawln(beg, num)

表示從行 beg 開始的 num 個螢幕行已損壞,應在下一次 refresh() 呼叫時完全重繪。

window.redrawwin()

觸控整個視窗,導致它在下一次 refresh() 呼叫時完全重繪。

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

立即更新顯示(將實際螢幕與之前的繪製/刪除方法同步)。

僅當視窗是由 newpad() 建立的 pad 時,才能指定 6 個可選引數。需要額外的引數來指示 pad 和螢幕的哪一部分參與其中。pminrowpmincol 指定要在 pad 中顯示的矩形的左上角。sminrowsmincolsmaxrowsmaxcol 指定要在螢幕上顯示的矩形的邊緣。要在 pad 中顯示的矩形的右下角是根據螢幕座標計算的,因為矩形必須大小相同。兩個矩形都必須完全包含在其各自的結構中。pminrowpmincolsminrowsmincol 的負值將被視為零。

window.resize(nlines, ncols)

重新分配 curses 視窗的儲存空間,以將其尺寸調整為指定值。如果任一尺寸大於當前值,則視窗的資料將填充空格,這些空格將合併當前的背景渲染(由 bkgdset() 設定)。

window.scroll([lines=1])

將螢幕或滾動區域向上滾動 lines 行。

window.scrollok(flag)

控制當視窗的游標由於底線的換行操作或鍵入最後一行的最後一個字元而移動到視窗或滾動區域的邊緣之外時會發生什麼。如果 flagFalse,則游標將保留在底線上。如果 flagTrue,則視窗將向上滾動一行。請注意,為了在終端上獲得物理滾動效果,還必須呼叫 idlok()

window.setscrreg(top, bottom)

將滾動區域設定為從行 top 到行 bottom。所有滾動操作都將在此區域中進行。

window.standend()

關閉突出顯示屬性。在某些終端上,這具有關閉所有屬性的副作用。

window.standout()

開啟屬性 A_STANDOUT

window.subpad(begin_y, begin_x)
window.subpad(nlines, ncols, begin_y, begin_x)

返回一個子視窗,其左上角位於 (begin_y, begin_x),寬度/高度為 ncols/nlines

window.subwin(begin_y, begin_x)
window.subwin(nlines, ncols, begin_y, begin_x)

返回一個子視窗,其左上角位於 (begin_y, begin_x),寬度/高度為 ncols/nlines

預設情況下,子視窗將從指定位置擴充套件到視窗的右下角。

window.syncdown()

觸碰視窗中在其任何祖先視窗中被觸碰的每個位置。此例程由 refresh() 呼叫,因此幾乎不需要手動呼叫它。

window.syncok(flag)

如果 flagTrue,則當視窗發生更改時,會自動呼叫 syncup()

window.syncup()

觸碰視窗的祖先中在視窗中已更改的所有位置。

window.timeout(delay)

設定視窗的阻塞或非阻塞讀取行為。如果 delay 為負數,則使用阻塞讀取(這將無限期地等待輸入)。如果 delay 為零,則使用非阻塞讀取,並且如果沒有輸入等待,getch() 將返回 -1。如果 delay 為正數,則 getch() 將阻塞 delay 毫秒,如果該時間結束時仍然沒有輸入,則返回 -1

window.touchline(start, count[, changed])

假設從 start 行開始,count 行已更改。如果提供了 changed,它指定受影響的行是否標記為已更改 (changed=True) 或未更改 (changed=False)。

window.touchwin()

為了進行繪圖最佳化,假設整個視窗已更改。

window.untouchwin()

將視窗中的所有行標記為自上次呼叫 refresh() 以來未更改。

window.vline(ch, n[, attr])
window.vline(y, x, ch, n[, attr])

顯示一條垂直線,從 (y, x) 開始,長度為 n,由帶有屬性 attr 的字元 ch 組成。

常量

curses 模組定義以下資料成員

curses.ERR

某些返回整數的 curses 例程(例如 getch())在失敗時返回 ERR

curses.OK

某些返回整數的 curses 例程(例如 napms())在成功時返回 OK

curses.version
curses.__version__

一個表示模組當前版本的位元組物件。

curses.ncurses_version

一個命名元組,包含 ncurses 庫版本的三個組成部分:majorminorpatch。所有值都是整數。也可以透過名稱訪問這些組成部分,因此 curses.ncurses_version[0] 等同於 curses.ncurses_version.major,依此類推。

可用性:如果使用了 ncurses 庫。

在版本 3.8 中新增。

curses.COLORS

終端可以支援的最大顏色數。僅在呼叫 start_color() 後定義。

curses.COLOR_PAIRS

終端可以支援的最大顏色對數。僅在呼叫 start_color() 後定義。

curses.COLS

螢幕的寬度,即列數。僅在呼叫 initscr() 後定義。由 update_lines_cols()resizeterm()resize_term() 更新。

curses.LINES

螢幕的高度,即行數。僅在呼叫 initscr() 後定義。由 update_lines_cols()resizeterm()resize_term() 更新。

一些常量可用於指定字元單元格屬性。可用的確切常量取決於系統。

屬性

含義

curses.A_ALTCHARSET

備用字元集模式

閃爍模式

curses.A_BOLD

粗體模式

curses.A_DIM

暗淡模式

curses.A_INVIS

不可見或空白模式

curses.A_ITALIC

斜體模式

curses.A_NORMAL

正常屬性

curses.A_PROTECT

保護模式

curses.A_REVERSE

反轉背景和前景色

curses.A_STANDOUT

突出顯示模式

curses.A_UNDERLINE

下劃線模式

curses.A_HORIZONTAL

水平高亮

curses.A_LEFT

左側高亮

curses.A_LOW

低高亮

curses.A_RIGHT

右側高亮

curses.A_TOP

頂部高亮

curses.A_VERTICAL

垂直高亮

3.7 版本新增: A_ITALIC 被新增。

提供多個常量用於提取某些方法返回的相應屬性。

位掩碼

含義

curses.A_ATTRIBUTES

提取屬性的位掩碼

curses.A_CHARTEXT

提取字元的位掩碼

curses.A_COLOR

提取顏色對欄位資訊的位掩碼

鍵由以 KEY_ 開頭的整數常量表示。 可用的確切鍵帽取決於系統。

鍵常量

curses.KEY_MIN

最小鍵值

curses.KEY_BREAK

Break 鍵(不可靠)

curses.KEY_DOWN

下箭頭

curses.KEY_UP

上箭頭

curses.KEY_LEFT

左箭頭

curses.KEY_RIGHT

右箭頭

curses.KEY_HOME

Home 鍵(向上+左箭頭)

curses.KEY_BACKSPACE

退格鍵(不可靠)

curses.KEY_F0

功能鍵。 最多支援 64 個功能鍵。

curses.KEY_Fn

功能鍵 n 的值

curses.KEY_DL

刪除行

curses.KEY_IL

插入行

curses.KEY_DC

刪除字元

curses.KEY_IC

插入字元或進入插入模式

curses.KEY_EIC

退出插入字元模式

curses.KEY_CLEAR

清除螢幕

curses.KEY_EOS

清除到螢幕末尾

curses.KEY_EOL

清除到行末

curses.KEY_SF

向前滾動 1 行

curses.KEY_SR

向後(反向)滾動 1 行

curses.KEY_NPAGE

下一頁

curses.KEY_PPAGE

上一頁

curses.KEY_STAB

設定製表符

curses.KEY_CTAB

清除製表符

curses.KEY_CATAB

清除所有制表符

curses.KEY_ENTER

回車或傳送(不可靠)

curses.KEY_SRESET

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

curses.KEY_RESET

重置或硬重置(不可靠)

curses.KEY_PRINT

列印

curses.KEY_LL

Home 向下或底部(左下)

curses.KEY_A1

小鍵盤左上角

curses.KEY_A3

小鍵盤右上角

curses.KEY_B2

小鍵盤中心

curses.KEY_C1

小鍵盤左下角

curses.KEY_C3

小鍵盤右下角

curses.KEY_BTAB

反向製表符

curses.KEY_BEG

開始

curses.KEY_CANCEL

取消

curses.KEY_CLOSE

關閉

curses.KEY_COMMAND

Cmd (命令)

curses.KEY_COPY

複製

curses.KEY_CREATE

建立

curses.KEY_END

結束

curses.KEY_EXIT

退出

curses.KEY_FIND

查詢

curses.KEY_HELP

幫助

curses.KEY_MARK

標記

curses.KEY_MESSAGE

訊息

curses.KEY_MOVE

移動

curses.KEY_NEXT

下一個

curses.KEY_OPEN

開啟

curses.KEY_OPTIONS

選項

curses.KEY_PREVIOUS

上一個(previous)

curses.KEY_REDO

重做

curses.KEY_REFERENCE

參考(reference)

curses.KEY_REFRESH

重新整理

curses.KEY_REPLACE

替換

curses.KEY_RESTART

重啟

curses.KEY_RESUME

恢復

curses.KEY_SAVE

儲存

curses.KEY_SBEG

Shifted Beg (beginning) (Shift + 開始)

curses.KEY_SCANCEL

Shifted Cancel (Shift + 取消)

curses.KEY_SCOMMAND

Shifted Command (Shift + 命令)

curses.KEY_SCOPY

Shifted Copy (Shift + 複製)

curses.KEY_SCREATE

Shifted Create (Shift + 建立)

curses.KEY_SDC

Shifted Delete char (Shift + 刪除字元)

curses.KEY_SDL

Shifted Delete line (Shift + 刪除行)

curses.KEY_SELECT

選擇

curses.KEY_SEND

Shifted End (Shift + 結束)

curses.KEY_SEOL

Shifted Clear line (Shift + 清除行)

curses.KEY_SEXIT

Shifted Exit (Shift + 退出)

curses.KEY_SFIND

Shifted Find (Shift + 查詢)

curses.KEY_SHELP

Shifted Help (Shift + 幫助)

curses.KEY_SHOME

Shifted Home (Shift + Home)

curses.KEY_SIC

Shifted Input (Shift + 輸入)

curses.KEY_SLEFT

Shifted Left arrow (Shift + 左箭頭)

curses.KEY_SMESSAGE

Shifted Message (Shift + 訊息)

curses.KEY_SMOVE

Shifted Move (Shift + 移動)

curses.KEY_SNEXT

Shifted Next (Shift + 下一個)

curses.KEY_SOPTIONS

Shifted Options (Shift + 選項)

curses.KEY_SPREVIOUS

Shifted Prev (Shift + 上一個)

curses.KEY_SPRINT

Shifted Print (Shift + 列印)

curses.KEY_SREDO

Shifted Redo (Shift + 重做)

curses.KEY_SREPLACE

Shifted Replace (Shift + 替換)

curses.KEY_SRIGHT

Shifted Right arrow (Shift + 右箭頭)

curses.KEY_SRSUME

Shifted Resume (Shift + 恢復)

curses.KEY_SSAVE

Shifted Save (Shift + 儲存)

curses.KEY_SSUSPEND

Shifted Suspend (Shift + 暫停)

curses.KEY_SUNDO

Shifted Undo (Shift + 撤銷)

curses.KEY_SUSPEND

暫停

curses.KEY_UNDO

撤銷

curses.KEY_MOUSE

發生了滑鼠事件

curses.KEY_RESIZE

終端調整大小事件

curses.KEY_MAX

最大鍵值

在 VT100 及其軟體模擬器(例如 X 終端模擬器)上,通常至少有四個功能鍵(KEY_F1KEY_F2KEY_F3KEY_F4)可用,並且箭頭鍵以顯而易見的方式對映到 KEY_UPKEY_DOWNKEY_LEFTKEY_RIGHT。如果您的機器有 PC 鍵盤,則可以安全地期望箭頭鍵和十二個功能鍵(較舊的 PC 鍵盤可能只有十個功能鍵);此外,以下小鍵盤對映是標準的

鍵帽

常量

插入

KEY_IC

刪除

KEY_DC

Home

KEY_HOME

結束

KEY_END

Page Up

KEY_PPAGE

Page Down

KEY_NPAGE

下表列出了來自備用字元集的字元。這些字元是從 VT100 終端繼承的,通常在 X 終端等軟體模擬器上可用。當沒有可用的圖形時,curses 會退回到粗略的可列印 ASCII 近似值。

註解

這些僅在呼叫 initscr() 後才可用。

ACS 程式碼

含義

curses.ACS_BBSS

右上角的別名

curses.ACS_BLOCK

實心方塊

curses.ACS_BOARD

方塊板

curses.ACS_BSBS

水平線的別名

curses.ACS_BSSB

左上角的別名

curses.ACS_BSSS

頂端T型連線的別名

curses.ACS_BTEE

底端T型連線

curses.ACS_BULLET

專案符號

curses.ACS_CKBOARD

棋盤格(點畫)

curses.ACS_DARROW

向下箭頭

curses.ACS_DEGREE

度數符號

curses.ACS_DIAMOND

菱形

curses.ACS_GEQUAL

大於或等於號

curses.ACS_HLINE

水平線

curses.ACS_LANTERN

燈籠符號

curses.ACS_LARROW

向左箭頭

curses.ACS_LEQUAL

小於或等於號

curses.ACS_LLCORNER

左下角

curses.ACS_LRCORNER

右下角

curses.ACS_LTEE

左側T型連線

curses.ACS_NEQUAL

不等於號

curses.ACS_PI

字母 pi

curses.ACS_PLMINUS

加號或減號

curses.ACS_PLUS

大加號

curses.ACS_RARROW

向右箭頭

curses.ACS_RTEE

右側T型連線

curses.ACS_S1

掃描線 1

curses.ACS_S3

掃描線 3

curses.ACS_S7

掃描線 7

curses.ACS_S9

掃描線 9

curses.ACS_SBBS

右下角的別名

curses.ACS_SBSB

垂直線的別名

curses.ACS_SBSS

右側T型連線的別名

curses.ACS_SSBB

左下角的別名

curses.ACS_SSBS

底部T型連線的別名

curses.ACS_SSSB

左側T型連線的別名

curses.ACS_SSSS

交叉或大加號的別名

curses.ACS_STERLING

英鎊符號

curses.ACS_TTEE

頂部T型連線

curses.ACS_UARROW

向上箭頭

curses.ACS_ULCORNER

左上角

curses.ACS_URCORNER

右上角

curses.ACS_VLINE

垂直線

下表列出了 getmouse() 使用的滑鼠按鈕常量

滑鼠按鈕常量

含義

curses.BUTTONn_PRESSED

滑鼠按鈕 n 被按下

curses.BUTTONn_RELEASED

滑鼠按鈕 n 被釋放

curses.BUTTONn_CLICKED

滑鼠按鈕 n 被單擊

curses.BUTTONn_DOUBLE_CLICKED

滑鼠按鈕 n 被雙擊

curses.BUTTONn_TRIPLE_CLICKED

滑鼠按鈕 n 被三擊

curses.BUTTON_SHIFT

按鈕狀態更改期間按下 Shift 鍵

curses.BUTTON_CTRL

按鈕狀態更改期間按下 Control 鍵

curses.BUTTON_ALT

按鈕狀態更改期間按下 Control 鍵

在 3.10 版本中更改: 如果底層 curses 庫提供了 BUTTON5_* 常量,則現在會公開這些常量。

下表列出了預定義的顏色

常量

顏色

curses.COLOR_BLACK

黑色

curses.COLOR_BLUE

藍色

curses.COLOR_CYAN

青色(淡綠藍色)

curses.COLOR_GREEN

綠色

curses.COLOR_MAGENTA

洋紅色(紫紅色)

curses.COLOR_RED

紅色

curses.COLOR_WHITE

白色

curses.COLOR_YELLOW

黃色

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 物件

您可以按如下方式例項化一個 Textbox 物件

class curses.textpad.Textbox(win)

返回一個文字框小部件物件。win 引數應該是一個 curses 視窗 物件,文字框將包含在該物件中。文字框的編輯游標最初位於包含視窗的左上角,座標為 (0, 0)。例項的 stripspaces 標誌最初處於啟用狀態。

Textbox 物件具有以下方法

edit([validator])

這是您通常會使用的入口點。它接受編輯按鍵,直到輸入其中一個終止按鍵。如果提供了 validator,它必須是一個函式。對於輸入的每個按鍵,它都會以該按鍵作為引數被呼叫;命令排程在結果上完成。此方法返回視窗內容作為字串;視窗中是否包含空格受 stripspaces 屬性的影響。

do_command(ch)

處理單個命令按鍵。以下是支援的特殊按鍵

按鍵

動作

Control-A

轉到視窗的左邊緣。

Control-B

游標向左移動,如果適用,則換到上一行。

Control-D

刪除游標下的字元。

Control-E

轉到右邊緣(stripspaces 關閉)或行尾(stripspaces 開啟)。

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

此屬性是一個標誌,用於控制視窗中空格的解釋。當它啟用時,每行末尾的空格將被忽略;任何將使游標落在末尾空格上的游標移動都將改為移動到該行末尾,並且當收集視窗內容時,將刪除末尾的空格。