2017-08-06 4 views
0

例として、文字列があります"Colour selected is red" "赤"という言葉だけを赤くするにはどうしたらいいですか?python cursesを使用して特定の文字列に色を追加するにはどうすればよいですか?

これはこれを試して達成するために使用しているものです。

import curses 

curses.start_color() 
curses.init_pair(1, curses.COLOR_RED, curses.COLOR_BLACK) 
win = curses.newwin(5 + window_height, window_width, 2, 4) 

win.addstr(position + 2, 5, "Colour selected is " + "Red", curses.color_pair(1)) 

これは大きなプロジェクトの一部なので、情報が不足している可能性があります。しかし、それは動作しません。

+0

どのようなコードを試しましたか?あなたは私達に抜粋を与えることができますか? – SeeDerekEngineer

+0

Ok snippetが追加されました – answerSeeker

+0

termcolorのpythonライブラリを使って色を赤に変更しようとしましたが、これが起こります: '^ [[31mred^[[0m' – answerSeeker

答えて

1

これは動作します:

import curses 

curses.initscr(); 

window_height = curses.LINES - 2 
window_width = curses.COLS - 2 
position = 3 

curses.start_color() 
curses.init_pair(1, curses.COLOR_RED, curses.COLOR_BLACK) 
win = curses.newwin(5 + window_height, window_width, 2, 4) 

win.addstr(position + 2, 5, "Colour selected is " + "Red", curses.color_pair(1)) 

win.getch() 

あなたが簡単な、完全なプログラムに問題が低下していた場合、あなたはおそらく、あなたの元のプログラムに問題を見るでしょう。

コメントのフォローアップ:cursesでは、addstr関数は、文字列パラメータ全体に属性(カラーを含む)を適用します。異なる属性を持つ文字列の異なる部分を使用する場合は、元の文字列の一部に適用される属性ごとに1つずつ、addstrを別々に呼び出す必要があります。このようなもの:

win.addstr(position + 2, 5, "Colour selected is ") 
win.addstr("Red", curses.color_pair(1)) 
+0

これは予想通りの動作です:addstrには3つのオプションのパラメータ)。 *属性*は*文字列*パラメータに適用されます。 2つの文字列が必要な場合は、addstrを2回コールする必要があります。 –

関連する問題