2017-08-15 24 views
0

是否可以/我怎麼預渲染終端格式的彩色文本在python curses.window渲染彩色文本在Python ncurses的窗口

基本上,我試圖在已經呈現彩色日誌輸出的現有控制檯應用程序頂部添加一些簡單的基於curses的UI東西,我試圖將其重定向到curses window

然而,這似乎是詛咒莫名其妙關閉控制顏色的各種控制代碼。

這裏有一個很小的腳本,使用colorama的替身文本來源:

import colorama 
import curses 

def run_gui(): 
    stdscr = curses.initscr() 
    curses.start_color() 
    curses.use_default_colors() 

    stdscr.insertln() 
    stdscr.insertln() 
    stdscr.insstr(colorama.Fore.RED+'wattt'+colorama.Style.RESET_ALL) 
    stdscr.insertln() 
    stdscr.insstr(colorama.Fore.GREEN+'wattt'+colorama.Style.RESET_ALL) 
    stdscr.insertln() 
    stdscr.insstr(colorama.Fore.YELLOW+'wattt'+colorama.Style.RESET_ALL) 
    stdscr.insertln() 
    stdscr.refresh() 

if __name__ == '__main__': 

    run_gui() 

這使得:

^[[33mwattt^[[0m 
^[[32mwattt^[[0m 
^[[31mwattt^[[0m 

有沒有一種方法,我可以告訴詛咒,使正常的控制代碼,還是我將不得不重做所有現有的顏色功能?

回答

0

短:後者( 「返工」)。

長:

「正常控制碼」恰巧是依賴於設備的; curses爲終端提供了與設備無關的接口。從manual page引述:

ncurses庫例程給用戶字符的屏幕更新合理優化的終端獨立 方法。

其實最詛咒實現通過terminfo-based functions這讓你做特殊的調整提供了一個低級接口,但

  • Python的綁定不包括(僅涵蓋ncurses的一部分),和
  • 對於諸如此類的事情表明,它不會是有用的,因爲它是操縱在詛咒被設計成知道如何更有效地比你的程序將執行管理信息。防止它知道屏幕上的內容會干擾詛咒。

Python的文檔中提到屬性,例如,在window.insstr(str[,attr])

您的例子可以做類似

stdscr.insstr("wattt", COLOR_PAIR(COLOR_RED)) 

什麼你問一直問前。例如:

+0

的輸入端通過管SSH來,它的着色要複雜得多則示例。我真的不想嘗試解析輸入的着色,只是爲了重構它。 –