2017-08-15 6 views
0

プリターミナル形式のカラーテキストをPythonのcurses.windowにレンダリングすることはできますか?Pythonのncursesウィンドウに色付きテキストをレンダリングする

基本的に、私はcurses windowにリダイレクトしようとしている、すでに色付きのログ出力をレンダリングしている既存のコンソールアプリケーションの上に、単純なcursesベースのUIを追加しようとしています。

しかし、cursesのように、色を制御するさまざまな制御コードがオフになっているようです。ここで

は、スタンド内のテキスト・ソースのため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

short:後者(「リワーク」)。

long:

「通常の制御コード」は、デバイスによって異なる場合があります。 cursesは端末に依存しないインタフェースを端末に提供します。 manual pageから引用:

ncursesライブラリ・ルーチンは、ユーザーに合理的な最適化と、文字画面を更新する端末に依存 方法を与えます。

実際にはほとんどの実装は、あなたが特別な微調整をやらせるterminfo-based functionsを介して低レベルのインタフェースを提供呪いが、

  • Pythonの結合は、(それはncursesの一部だけをカバー)ことを含んでいない、と
  • これは、cursesがあなたのプログラムよりも効率的に管理する方法を知るように設計されているという情報を操作しているので、役に立たないでしょう。スクリーン上のものが何であるかを知ることを防ぐことは、cursesが行うことを妨げることになります。

ザ・Pythonドキュメントははあなたの例では、あなたが前に頼まれましたについて尋ねているもの

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

ような何かを行うことができwindow.insstr(str[,attr])

で、例えば、属性言及しています。たとえば:

+0

入力はSSH管を介して来て、それが着色だが、その後の例はるかに複雑です。私は実際に入力色を解析するだけで、再構築する必要はありません。 –

関連する問題