可愛的Python:Curses編程

來源:互聯網
上載者:User

某一類 Python應用程式最好使用互動式使用者介面,這樣可以消除圖形環境的系統開銷或複雜性。互動式文字模式程式(在Linux/UNIX 中),例如封裝在 Python 的標準 curses模組中的 ncurses 庫,正是您所需要的。本文中,DavidMertz 討論了在 Python 中 curses 的用法。他使用從前端到 Txt2Html程式的樣本原始碼闡述了 curses 環境。

curses 庫 ( ncurses ) 提供了控制字元螢幕的獨立於終端的方法。curses 是大多數類似於 UNIX 的系統(包括 Linux)的標準部分,而且它已經移植到 Windows 和其它系統。curses 程式將在純文字系統上、xterm 和其它視窗化控制台會話中運行,這使這些應用程式具有良好的可移植性。

介紹 curses

Python 的標準 curses 提供了“玻璃電傳”(glass teletype)(在 20 世紀 70 年代,原始 curses 庫剛建立時,它叫做 CRT)的公用特性的基本介面。有許多方法可以讓用 Python 編寫的互動式文字模式程式變得更巧妙。這些方法分成兩類。

一方面,有些Python 模組支援 ncurses (curses 的超集)或 slang (相似卻獨立的控制台庫)的全部功能集合。最值得注意的是,這當中有一個增強庫(由適當的 Python 模組封裝)可以讓您將顏色添加到介面上。

另一方面,許多構建在curses(或 ncurses / slang )上的進階視窗小組件庫添加了諸如按鈕、菜單、滾動欄和各種公用介面裝置之類的特性。如果您看到過用諸如 Borland's TurboWindows(DOS 版)之類的庫開發的應用程式,您就知道在文字模式控制台中,這些特性是多麼吸引人。視窗小組件庫中的功能單單使用 curses 都可以達到,但是還可以利用其它程式員在進階介面上取得的成果。請參閱 參考資料,以尋找所提到的模組的連結。

本文只涉及 curses 自身的特性。由於 curses 模組是標準發行版的一部分,您不必下載支援庫或其它 Python 模組就可以找到並使用它(至少在 Linux 或 UNIX 系統中是這樣)。理解 curses 提供的基本支援很有用,即使只是作為理解進階模組的基礎。即使不使用其它模組,單獨使用 curses 構建漂亮且實用的 Python 文字模式應用程式也很簡單。預先發行的說明提到 Python 2.0 將包括 curses 的增強版本,但不管怎樣,它應該相容此處說明的版本。

應用程式

我將討論為 Txt2Html(在 “可愛的 Python:我的第一個基於 Web 的過濾代理” 中介紹的文本到 HTML 轉換程式)編寫的封裝器,作為本文的測試應用程式。Txt2Html 有幾種運行方式。但為了與本文的目的保持一致,我們將研究從命令列啟動並執行 Txt2Html。操作 Txt2Html 的一種方式是向它提供一組命令列變數(它們說明要執行的轉換的各方面),然後將應用程式當作批處理運行。對於偶爾使用的使用者,一個更友好的使用者介面提供了一個互動式選擇螢幕,它可以在執行實際轉換之前,引導使用者遍曆轉換選項(提供選中選項的視覺反饋)。

curses_txt2html 的介面基於常見的頂欄菜單,它帶有下拉和嵌套子功能表。所有菜單相關的功能都在 curses 上“從頭”開始設計。雖然這些菜單缺少更複雜的 curses 封裝器的一些特性,但它們的準系統是由幾行只使用 curses 的代碼實現的。這個介面還帶有一個簡單的捲動協助框和幾個使用者輸入欄位。以下是顯示常規布局和樣式的應用程式的螢幕快照。

X終端上的應用程式

Linux終端上的應用程式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.