2017-03-05 11 views
0

私はcursesのためにPythonのラッパーライブラリを使ってテキストゲームを開発しています。 私は、ユーザーが入力したテキストを、ゲームが出力するテキストと異なる色にしたいと考えています。出力テキストの色のペアを定義する際に問題はありませんでしたが、ユーザーが積極的に入力しているように入力テキストを変更してさまざまな色を表示する方法を理解することはできません。pythonのcursesを使って入力テキストの色を変更する

現在、getstr()メソッドを使用してすべての入力を取得しています。

これはpython/cursesで可能ですか?

おかげで、 イアン

+0

「getch」を使用して入力し、必要な方法で表示するだけです。 'stdin'から入力を受け取り、' stdout'に出力するデフォルトの 'input' /' raw_input'メソッドとは異なります。 – hashcode55

答えて

0

あなたはechoをオンにターンが最初にオフにエコー場合は、例えば、呪いにラッパーを使用している場合、Pythonは、ラッパーを呪い初期化することができますが、

# Initialize curses 
    stdscr = curses.initscr() 

    # Turn off echoing of keys, and enter cbreak mode, 
    # where no buffering is performed on keyboard input 
    curses.noecho() 
    curses.cbreak() 

cursesがエコーしていない場合、あなたのプログラムは何らかのエコーをしているに違いありません。しかし、あなたはgetstrのためにあなたが(ncursesの)以来、上のエコーなってきた意味という、マニュアルページをgetstrを使用している

を言うので、文字入力がechoがで現在ある場合にのみ、エコーされます。その場合、バックスペースは前の文字(通常は左の動き)の削除としてエコーされます。この場合

、あなたは(あなたの窓が編成されている方法に応じて)可能性がwattrsetを使用します。

のattrに属性の「背景」セットを設定

。このセットは、最初は0(属性なし)です。

「背景」とは、ウィンドウの属性で、ウィンドウに追加されたテキストに関連付けられた属性とマージされます。 getstrは追加するテキストに属性を持たないため、ウィンドウ属性を設定することで問題が「修正」されます。しかし、getstrが完了すると元の属性を復元して復元することをお勧めします。

ncurses curs_attrマニュアルページでこれについて説明しています。 getstr関数はwaddchを内部的に使用します(printwaddstrなど)が、そのマニュアルページにはそのことは言及していません。

関連する問題