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

原始碼: Lib/curses


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

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

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

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

備註

文件中提及 字元 時,它可以指定為一個整數、一個單字元的 Unicode 字串或一個單位元組的位元組字串。

文件中提及 字元字串 時,它可以指定為一個 Unicode 字串或一個位元組字串。

參見

模組 curses.ascii

用於處理 ASCII 字元的實用程式,無論您的區域設定如何。

模組 curses.panel

增加了 curses 視窗深度的面板堆疊擴充套件。

模組 curses.textpad

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

使用 Python 進行 Curses 程式設計

Andrew Kuchling 和 Eric Raymond 編寫的關於使用 Python 和 curses 的教程資料。

函式

模組 curses 定義了以下異常

exception curses.error

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

備註

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

模組 curses 定義了以下函式

curses.assume_default_colors(fg, bg, /)

允許在支援此功能的終端上使用顏色的預設值。使用此功能以支援應用程式的透明度。

  • 將終端預設的前景/背景顏色分配給顏色號 -1。因此 init_pair(x, COLOR_RED, -1) 會將顏色對 x 初始化為紅色前景,預設背景;init_pair(x, -1, COLOR_BLUE) 會將顏色對 x 初始化為預設前景,藍色背景。

  • 將顏色對 0 的定義更改為 (fg, bg)

在 3.14 版本加入。

curses.baudrate()

返回終端的輸出速度,單位為位元/秒。在軟體終端模擬器上,它將具有固定的高值。出於歷史原因而包含;以前,它用於編寫時間延遲的輸出迴圈,偶爾也根據線路速度改變介面。

curses.beep()

發出短促的注意音。

curses.can_change_color()

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

curses.cbreak()

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

curses.color_content(color_number)

返回顏色 color_number 的紅、綠、藍 (RGB) 分量的強度,其值必須在 0COLORS - 1 之間。返回一個包含給定顏色的 R、G、B 值的 3 元組,其值將在 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 顏色對只能透過 use_default_colors()assume_default_colors() 更改)。fgbg 引數的值必須在 0COLORS - 1 之間,或者在呼叫 use_default_colors()assume_default_colors() 之後為 -1。如果顏色對先前已初始化,則螢幕會重新整理,並且該顏色對的所有出現都會更改為新定義。

curses.initscr()

初始化庫。返回一個表示整個螢幕的 window 物件。

備註

如果開啟終端時出錯,底層 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)

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

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

curses.nl()

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

curses.nocbreak()

退出 cbreak 模式。返回到具有行緩衝的正常“cooked”模式。

curses.noecho()

退出回顯模式。關閉輸入字元的回顯。

curses.nonl()

退出換行模式。停用輸入時回車轉換為換行符,並停用輸出時換行符到換行符/回車符的低階轉換(但這不會改變 addch('\n') 的行為,它總是在虛擬螢幕上執行等效的回車和換行)。關閉轉換後,curses 有時可以稍微加快垂直移動;此外,它將能夠在輸入時檢測回車鍵。

curses.noqiflush()

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

curses.noraw()

退出原始模式。返回到具有行緩衝的正常“cooked”模式。

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

等同於 assume_default_colors(-1, -1)

curses.wrapper(func, /, *args, **kwargs)

初始化 curses 並呼叫另一個可呼叫物件 func,它應該是您的其餘 curses 應用程式。如果應用程式引發異常,此函式將在重新引發異常並生成回溯之前將終端恢復到正常狀態。可呼叫物件 func 將其主視窗 'stdscr' 作為第一個引數傳遞,後跟傳遞給 wrapper() 的任何其他引數。在呼叫 func 之前,wrapper() 開啟 cbreak 模式,關閉回顯,啟用終端鍵盤,並在終端支援顏色時初始化顏色。退出時(無論是正常退出還是因異常退出)它會恢復 cooked 模式,開啟回顯,並停用終端鍵盤。

視窗物件

class curses.window

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

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

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

備註

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

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

(y, x) 處繪製字元字串 str 的最多 n 個字元,並帶有屬性 attr,覆蓋顯示上先前存在的任何內容。

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

(y, x) 處繪製字元字串 str,並帶有屬性 attr,覆蓋顯示上先前存在的任何內容。

備註

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

  • 一個 ncurses 中的 bug(此 Python 模組的後端)可能在調整視窗大小時導致段錯誤。此問題已在 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 都為 vertchtsbs 都為 horch。此函式始終使用預設的角字元。

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

設定當前游標位置的 num 個字元的屬性,如果提供了 (y, x),則設定該位置的字元屬性。如果未提供 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)

從使用者讀取一個位元組物件,具有基本的行編輯能力。n 的最大值為 2047。

3.14 版中已變更: n 的最大值從 1023 增加到 2047。

window.getyx()

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

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

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

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 為零或負數,則插入整個字串。游標右側的所有字元都向右移動,最右側的字元丟失。游標位置不變(如果指定了 yx,則在移動到 yx 之後)。

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

在游標下方的字元之前插入一個字串(儘可能多地適合該行的字元)。游標右側的所有字元都向右移動,最右側的字元丟失。游標位置不變(如果指定了 yx,則在移動到 yx 之後)。

window.instr([n])
window.instr(y, x[, n])

返回從當前游標位置開始(如果指定了 yx,則從 yx 開始)從視窗中提取的位元組物件。屬性從字元中剝離。如果指定了 ninstr() 返回一個最長為 n 個字元的字串(不包括尾隨的 NUL)。n 的最大值為 2047。

3.14 版中已變更: n 的最大值從 1023 增加到 2047。

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)

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

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

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

這 6 個可選引數只能在視窗是使用 newpad() 建立的板時指定。需要額外的引數來指示板和螢幕的哪些部分涉及。pminrowpmincol 指定要在板中顯示的矩形的左上角。sminrowsmincolsmaxrowsmaxcol 指定要在螢幕上顯示的矩形的邊緣。要在板中顯示的矩形的右下角是根據螢幕座標計算的,因為矩形必須大小相同。兩個矩形都必須完全包含在其各自的結構中。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) 處顯示一條由字元 ch 和屬性 attr 組成的長度為 n 的垂直線。

常量

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

下移或底部(左下)

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

命令

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

上一個

curses.KEY_REDO

重做

curses.KEY_REFERENCE

參考

curses.KEY_REFRESH

重新整理

curses.KEY_REPLACE

替換

curses.KEY_RESTART

重啟

curses.KEY_RESUME

恢復

curses.KEY_SAVE

儲存

curses.KEY_SBEG

Shift + Beg(開始)

curses.KEY_SCANCEL

Shift + 取消

curses.KEY_SCOMMAND

Shift + 命令

curses.KEY_SCOPY

Shift + 複製

curses.KEY_SCREATE

Shift + 建立

curses.KEY_SDC

Shift + 刪除字元

curses.KEY_SDL

Shift + 刪除行

curses.KEY_SELECT

選擇

curses.KEY_SEND

Shift + 結束

curses.KEY_SEOL

Shift + 清除行

curses.KEY_SEXIT

Shift + 退出

curses.KEY_SFIND

Shift + 查詢

curses.KEY_SHELP

Shift + 幫助

curses.KEY_SHOME

Shift + Home

curses.KEY_SIC

Shift + 輸入

curses.KEY_SLEFT

Shift + 左箭頭

curses.KEY_SMESSAGE

Shift + 訊息

curses.KEY_SMOVE

Shift + 移動

curses.KEY_SNEXT

Shift + 下一個

curses.KEY_SOPTIONS

Shift + 選項

curses.KEY_SPREVIOUS

Shift + 上一個

curses.KEY_SPRINT

Shift + 列印

curses.KEY_SREDO

Shift + 重做

curses.KEY_SREPLACE

Shift + 替換

curses.KEY_SRIGHT

Shift + 右箭頭

curses.KEY_SRSUME

Shift + 恢復

curses.KEY_SSAVE

Shift + 儲存

curses.KEY_SSUSPEND

Shift + 暫停

curses.KEY_SUNDO

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 座標。在可能的情況下(包括 xterm 和大多數其他軟體終端模擬器),矩形將使用 VT100/IBM PC 形式字元繪製。否則,它將使用 ASCII 破折號、豎線和加號繪製。

文字框物件

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

class curses.textpad.Textbox(win)

返回一個文字框小部件物件。_win_ 引數應該是一個 curses window 物件,文字框將包含在該物件中。文字框的編輯游標最初位於包含視窗的左上角,座標為 (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

如果視窗只有一行則終止,否則插入換行符。

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

此屬性是一個標誌,控制視窗中空白的解釋。當它開啟時,每行末尾的空白被忽略;任何會導致游標落在末尾空白處的移動都會轉到該行的末尾,並且在收集視窗內容時會去除末尾空白。