curses --- 文字セル表示のターミナル処理¶
ソースコード: Lib/curses
curses モジュールは、移植可能な高度な端末処理の事実上の標準である curses ライブラリへのインターフェースを提供します。
curses が最も広く用いられているのは Unix 環境ですが、Windows、DOS で利用できるバージョンもあり、おそらく他のシステムで利用できるバージョンもあります。この拡張モジュールは Linux および BSD 系の Unixで動作するオープンソースの curses ライブラリである ncurses の API に合致するように設計されています。
利用可能な環境: not Android, not iOS, not WASI.
このモジュールは モバイルプラットフォーム と WebAssemblyプラットフォーム をサポートしません。
これは optional module です。 お使いの CPython に含まれていない場合は、配布元 (Python を提供した組織など) のドキュメントを確認してください。 配布元の方は オプションのモジュールの要件 を参照してください。
利用可能な環境: Unix.
注釈
このドキュメントで 文字 と記されている箇所では、整数、1 文字の Unicode 文字列、または 1 バイトのバイト文字列を指定できます。
整数はエンコードされた 1 バイトのコードであり、window.inch() の返り値のように、属性や色ペアを組み合わせたものでも構いません。
このドキュメントで 文字列 と記されている箇所では、Unicode 文字列またはバイト文字列を指定できます。
注釈
複数のスレッドから curses を使用できるかどうかは、基盤となるライブラリとそのビルド方法に依存します。
ncurses のデフォルトビルドを含む多くの実装では、スクリーンの状態が共有され、スレッドセーフではありません。
ブロックや更新を行うメソッド (getch() や refresh() など) は GIL を解放するため、複数のスレッドから同期せずに使用するとインタープリタがクラッシュする可能性があります。
呼び出しを直列化してください。
参考
curses.asciiモジュールロケール設定に関わらず ASCII 文字を扱うためのユーティリティ。
curses.panelモジュールcurses ウィンドウにデプス機能を追加するパネルスタック拡張。
curses.textpadモジュールEmacs ライクなキーバインディングをサポートする編集可能な curses 用テキストウィジェット。
- Python で Curses プログラミング
Andrew Kuchling および Eric Raymond によって書かれた、curses を Python で使うためのチュートリアルです。
関数¶
curses モジュールは以下の例外を定義します:
- exception curses.error¶
curses ライブラリ関数がエラーを返した際に送出される例外です。
注釈
関数やメソッドにおけるオプションの引数 x および y がある場合、デフォルト値は常に現在のカーソルになります。オプションの attr がある場合、デフォルト値は A_NORMAL です。
curses モジュールは以下の関数を定義します:
- curses.assume_default_colors(fg, bg, /)¶
この機能をサポートする端末で、色のデフォルト値を使用できるようにします。 アプリケーションで透過表示をサポートするには、この関数を使用してください。
端末のデフォルトの前景色と背景色を色番号
-1に割り当てます。 したがって、init_pair(x, COLOR_RED, -1)はペア x をデフォルトの背景色に赤の前景色として初期化し、init_pair(x, -1, COLOR_BLUE)はペア x を青の背景色にデフォルトの前景色として初期化します。色ペア
0の定義を(fg, bg)に変更します。
これは ncurses の拡張機能です。
Added in version 3.14.
- curses.baudrate()¶
端末の出力速度をビット/秒で返します。ソフトウェア端末エミュレータの場合、これは固定の高い値を持つことになります。この関数は歴史的な理由で入れられています; かつては、この関数は時間遅延を生成するための出力ループを書くために用いられたり、行速度に応じてインターフェースを切り替えたりするために用いられたりしていました。
- curses.beep()¶
注意を促す短い音を鳴らします。
- curses.can_change_color()¶
端末に表示される色をプログラマが変更できるか否かによって、
TrueまたはFalseを返します。
- curses.cbreak()¶
cbreak モードに入ります。cbreak モード ("rare" モードと呼ばれることもあります) では、通常の tty 行バッファリングはオフにされ、文字を一文字一文字読むことができます。ただし、raw モードとは異なり、特殊文字 (割り込み:interrupt、終了:quit、一時停止:suspend、およびフロー制御) については、tty ドライバおよび呼び出し側のプログラムに対する通常の効果をもっています。まず
raw()を呼び出し、次いでcbreak()を呼び出すと、端末を cbreak モードにします。
- curses.color_content(color_number)¶
色 color_number の赤、緑、青 (RGB) 成分の強度を返します。 color_number は
0からCOLORS - 1の範囲でなければなりません。 指定した色の R、G、B の値を含む 3 要素のタプルを返します。 各値は0(成分なし) から1000(成分の最大量) の範囲です。 その色がサポートされていない場合は例外を送出します。
- curses.color_pair(pair_number)¶
指定した色ペアでテキストを表示するための属性値を返します。 最初の 256 個の色ペアだけがサポートされています。 この属性値は
A_STANDOUT、A_REVERSE、その他のA_*属性と組み合わせることができます。pair_number()はこの関数と逆の処理を行います。
- curses.curs_set(visibility)¶
カーソルの状態を設定します。visibility は
0、1または2に設定され、それぞれ不可視、通常、または非常に可視、を意味します。要求された可視属性を端末がサポートしている場合、以前のカーソル状態が返されます; そうでなければ例外が送出されます。多くの端末では、"可視 (通常)" モードは下線カーソルで、"非常に可視" モードはブロックカーソルです。
- curses.def_prog_mode()¶
現在の端末属性を、稼動中のプログラムが curses を使う際のモードである "プログラム" モードとして保存します。(このモードの反対は、プログラムが curses を使わない "シェル" モードです。) その後
reset_prog_mode()を呼ぶとこのモードを復旧します。
- curses.def_shell_mode()¶
現在の端末属性を、稼動中のプログラムが curses を使っていないときのモードである "シェル" モードとして保存します。(このモードの反対は、プログラムが curses 機能を利用している "プログラム" モードです。) その後
reset_shell_mode()を呼ぶとこのモードを復旧します。
- curses.delay_output(ms)¶
出力に ms ミリ秒の一時停止を入れます。
- curses.doupdate()¶
物理スクリーンを更新します。 curses ライブラリは、現在の物理スクリーンの内容を表すものと、次に表示したい状態を表す仮想スクリーンという 2 つのデータ構造を保持しています。
doupdate()関数は、仮想スクリーンに一致するように物理スクリーンを更新します。仮想スクリーンは
addstr()のような書き込み操作をウィンドウに行った後にnoutrefresh()を呼び出して更新することができます。通常のrefresh()呼び出しは、単にnoutrefresh()を呼んだ後にdoupdate()を呼ぶだけです; 複数のウィンドウを更新しなければならない場合、すべてのウィンドウに対してnoutrefresh()を呼び出した後、一度だけdoupdate()を呼ぶことで、パフォーマンスを向上させることができ、おそらくスクリーンのちらつきも押さえることができます。
- curses.echo()¶
echo モードに入ります。echo モードでは、各文字入力はスクリーン上に入力された通りにエコーバックされます。
- curses.endwin()¶
ライブラリの非初期化を行い、端末を通常の状態に戻します。
- curses.erasechar()¶
ユーザの現在の消去文字 (erase character) を1バイトの bytes オブジェクトで返します。Unix オペレーティングシステムでは、この値は curses プログラムが制御している端末の属性であり、curses ライブラリ自体では設定されません。
- curses.filter()¶
filter()ルーチンを使用する場合は、initscr()より前に呼び出す必要があります。 これにより、初期化時にLINESが1に設定され、機能clear、cup、cud、cud1、cuu1、cuu、vpaが無効になり、home文字列がcrの値に設定されます。 その結果、カーソルもスクリーンの更新も現在の行に限定されます。 これを利用すると、スクリーンの他の部分に触れずに、1 文字ずつ行を編集できるようになります。
- curses.flash()¶
スクリーンを点滅します。すなわち、画面を色反転して、短時間でもとにもどします。人によっては、
beep()で生成される注意音よりも、このような "目に見えるベル" を好みます。
- curses.flushinp()¶
すべての入力バッファをフラッシュします。この関数は、ユーザによってすでに入力されているが、まだプログラムによって処理されていないすべての先行入力文字を破棄します。
- curses.getmouse()¶
getch()がKEY_MOUSEを返してマウスイベントを通知した後、この関数を呼んで待ち行列上に置かれているマウスイベントを取得しなければなりません。イベントは(id, x, y, z, bstate)の 5 要素のタプルで表現されています。id は複数のデバイスを区別するための ID 値で、x, y, z はイベントの座標値です。(現在 z は使われていません) bstate は整数値で、その各ビットはイベントのタイプを示す値に設定されています。この値は以下に示す定数のうち一つまたはそれ以上のビット単位 OR になっています。以下の定数の n は 1 から 5 のボタン番号を示します:BUTTONn_PRESSED,BUTTONn_RELEASED,BUTTONn_CLICKED,BUTTONn_DOUBLE_CLICKED,BUTTONn_TRIPLE_CLICKED,BUTTON_SHIFT,BUTTON_CTRL,BUTTON_ALT。バージョン 3.10 で変更: 基盤となる curses ライブラリが
BUTTON5_*定数を提供する場合に、それらが公開されるようになりました。
- curses.getsyx()¶
仮想スクリーンにおける現在のカーソル位置をタプル
(y, x)で返します。leaveok()がTrueに設定されていれば、(-1, -1)が返されます。
- curses.getwin(file)¶
以前の
window.putwin()呼び出しでファイルに保存したウィンドウ関連のデータを読み込みます。 続いて、そのデータを使用して新しいウィンドウを作成して初期化し、新しいウィンドウオブジェクトを返します。 file 引数は、バイナリモードで読み込み用に開いたファイルオブジェクトでなければなりません。
- curses.has_colors()¶
端末が色表示を行える場合には
Trueを返します。そうでない場合にはFalseを返します。
- curses.has_extended_color_support()¶
モジュールが拡張カラーをサポートしている場合は
Trueを、そうでない場合はFalseを返します。 拡張カラーのサポートにより、16 色を超える色をサポートする端末 (例えば xterm-256color) で 256 個を超える色ペアを使用できます。拡張カラーのサポートには ncurses バージョン 6.1 以降が必要です。
Added in version 3.10.
- curses.has_ic()¶
端末が文字の挿入/削除機能を持つ場合に
Trueを返します。最近の端末エミュレータはどれもこの機能を持っており、この関数は歴史的な理由のためだけに存在しています。
- curses.has_il()¶
端末が行の挿入/削除機能を持つ場合に
Trueを返します。最近の端末エミュレータはどれもこの機能を持っていて、この関数は歴史的な理由のためだけに存在しています。
- curses.has_key(ch)¶
キー値 ch をとり、現在の端末タイプがその値のキーを認識できる場合に
Trueを返します。
- curses.halfdelay(tenths)¶
半遅延モードに使用します。 このモードは、ユーザが入力した文字をプログラムがすぐに利用できる点では cbreak モードと同様です。 ただし、tenths × 0.1 秒間ブロックした後、何も入力されていなければ、
getch()は-1を返し、getkey()とget_wch()はcurses.errorを送出します。 tenths の値は1から255の範囲でなければなりません。 半遅延モードから抜けるにはnocbreak()を使用してください。
- curses.init_color(color_number, r, g, b)¶
色の定義を変更します。変更したい色番号と、その後に 3 つ組みの RGB 値 (赤、緑、青の成分の大きさ) をとります。color_number の値は
0からCOLORS - 1の間でなければなりません。r, g, b の値は0から1000の間でなければなりません。init_color()を使うと、スクリーン上でカラーが使用されている部分はすべて新しい設定に即時変更されます。この関数はほとんどの端末で何も行いません;can_change_color()がTrueを返す場合にのみ動作します。
- curses.init_pair(pair_number, fg, bg)¶
色ペアの定義を変更します。 変更する色ペアの番号、前景色の番号、背景色の番号という 3 つの引数を取ります。 pair_number の値は
1からCOLOR_PAIRS - 1の範囲でなければなりません (色ペア0はuse_default_colors()とassume_default_colors()でのみ変更できます)。 引数 fg と bg の値は0からCOLORS - 1の範囲か、use_default_colors()またはassume_default_colors()を呼び出した後であれば-1でなければなりません。 色ペアが以前に初期化されていた場合、スクリーンが更新され、その色ペアを使用しているすべての箇所が新しい定義に変わります。
- curses.initscr()¶
ライブラリを初期化します。スクリーン全体をあらわす ウィンドウ オブジェクトを返します。
この関数より先に
setupterm()を呼び出す際の注意事項は、その関数の説明を参照してください。注釈
端末のオープン時にエラーが発生した場合、curses ライブラリによってインタープリタが終了される場合があります。
- curses.intrflush(flag)¶
flag が
Trueの場合、割り込みキー (interrupt、break、quit) を押すと端末ドライバのキュー内の出力がすべてフラッシュされます。 flag がFalseの場合、フラッシュは行われません。
- curses.is_term_resized(nlines, ncols)¶
resize_term()を呼び出した場合にウィンドウ構造が変更されるならTrueを、そうでなければFalseを返します。
- curses.keyname(k)¶
番号 k のキーの名前を bytes オブジェクトで返します。 印字可能な ASCII 文字を生成するキーの名前はそのキーの文字自体になります。 コントロールキーと組み合わせたキーの名前は、キャレット(
b'^')の後に対応する ASCII 文字が続く 2 バイトの bytes オブジェクトになります。 Alt キーと組み合わせたキー (128--255) の名前は、先頭にb'M-'が付き、その後に対応する ASCII 文字の名前が続く bytes オブジェクトになります。k が負の場合は
ValueErrorを送出します。
- curses.killchar()¶
ユーザの現在の行消去文字を、1 バイトの bytes オブジェクトとして返します。 Unix オペレーティングシステムでは、これは curses プログラムの制御端末の属性であり、curses ライブラリ自体が設定するものではありません。
- curses.longname()¶
現在の端末について記述している terminfo の長形式 name フィールドが入った bytes オブジェクトを返します。verbose 形式記述の最大長は 128 文字です。この値は
initscr()呼び出しの後でのみ定義されています。
- curses.meta(flag)¶
flag が
Trueの場合、8 ビット文字の入力を許可します。flag がFalseの場合、7 ビット文字だけを許可します。
- curses.mouseinterval(interval)¶
ボタンを押してから離すまでのイベントをクリックと認識する最大時間をミリ秒で設定し、以前の時間間隔を返します。 デフォルト値は 166 ミリ秒、すなわち 6 分の 1 秒です。 時間間隔を変更せずに取得するには、負の interval を使用してください。
- curses.mousemask(mousemask)¶
通知するマウスイベントを設定し、タプル
(availmask, oldmask)を返します。 availmask は、指定したマウスイベントのうち通知可能なものを示し、完全に失敗した場合は0になります。 oldmask は以前のマウスイベントマスクの値です。 この関数を一度も呼び出さない場合、マウスイベントは一切通知されません。
- curses.napms(ms)¶
ms ミリ秒間スリープします。
- curses.newpad(nlines, ncols)¶
与えられた行とカラム数を持つパッド (pad) データ構造を生成し、そのポインタを返します。パッドはウィンドウオブジェクトとして返されます。
パッドはウィンドウに似ていますが、スクリーンの大きさによる制限がなく、スクリーンの特定の部分に関連付けられるとは限りません。 大きなウィンドウが必要で、一度にスクリーンに表示するのはその一部だけという場合にパッドを使用できます。 パッドでは、スクロールや入力のエコーバックなどによる自動更新は行われません。 パッドの
refresh()とnoutrefresh()メソッドには、表示するパッドの部分とスクリーン上の表示位置を指定する 6 つの引数が必要です。 これらの引数は pminrow、pmincol、sminrow、smincol、smaxrow、smaxcol です。 p で始まる引数は表示するパッド領域の左上隅を示し、s で始まる引数はパッド領域を表示するスクリーン上の切り取り矩形を定義します。
- curses.newwin(nlines, ncols)¶
- curses.newwin(nlines, ncols, begin_y, begin_x)
左上の角が
(begin_y, begin_x)で、高さ/幅が nlines / ncols の新規 ウィンドウ を返します。デフォルトでは、ウィンドウは指定された位置からスクリーンの右下まで広がります。
- curses.nl(flag=True)¶
newlime モードに入ります。このモードはリターンキーを入力中の改行として変換し、出力時に改行文字を復帰 (return) と改行 (line-feed) に変換します。newline モードは初期化時にはオンになっています。
flag が
Falseの場合、nonl()の呼び出しと同じ効果があります。
- curses.nocbreak()¶
cbreak モードを終了します。行バッファリングを行う通常の "cooked" モードに戻ります。
- curses.noecho()¶
echo モードを終了します。入力のエコーバックはオフにされます。
- curses.nonl()¶
newline モードを終了します。 入力時のリターンキーから改行への変換、および出力時の改行から復帰/改行への低レベル変換を無効化します (ただし、
addch('\n')の振る舞いは変更せず、仮想スクリーン上では常に復帰と改行に等しくなります)。 変換をオフにすることで、curses は垂直方向の動きを少しだけ高速化できることがあります; また、入力中のリターンキーの検出ができるようになります。
- curses.noqiflush()¶
noqiflush()ルーチンを使うと、通常行われているINTR、QUITおよびSUSP文字による入力および出力キューのフラッシュが行われなくなります。シグナルハンドラが終了した際、割り込みが発生しなかったかのように出力を続たい場合、ハンドラ中でnoqiflush()を呼び出すことができます。
- curses.noraw()¶
raw モードから離れます。行バッファリングを行う通常の "cooked" モードに戻ります。
- curses.pair_content(pair_number)¶
要求された色ペアの色を含むタプル
(fg, bg)を返します。pair_number は0からCOLOR_PAIRS - 1の間でなければなりません。
- curses.pair_number(attr)¶
attr に対する色ペアセットの番号を返します。
color_pair()はこの関数の逆に相当します。
- curses.putp(str)¶
tputs(str, 1, putchar)と等価です。 現在の端末に対し、指定した terminfo 機能の値である bytes オブジェクトを出力します。putp()の出力先は常に標準出力であることに注意してください。先に
setupterm()(またはinitscr()) を呼び出す必要があります。
- curses.qiflush([flag])¶
flag が
Falseなら、noqiflush()を呼ぶのとと同じ効果です。flag がTrueか、引数が与えられていない場合、制御文字が読み出された最にキューはフラッシュされます。
- curses.raw()¶
raw モードに入ります。raw モードでは、通常の行バッファリングと割り込み (interrupt)、終了 (quit)、一時停止 (suspend)、およびフロー制御キーはオフになります; 文字は curses 入力関数に一文字づつ渡されます。
- curses.reset_prog_mode()¶
端末を "program" モードに復旧し、あらかじめ
def_prog_mode()で保存した内容に戻します。
- curses.reset_shell_mode()¶
端末を "shell" モードに復旧し、あらかじめ
def_shell_mode()で保存した内容に戻します。
- curses.resize_term(nlines, ncols)¶
resizeterm()で使用されるバックエンド関数で、ウィンドウサイズを変更する時、resize_term()は拡張された領域を埋めます。呼び出したアプリケーションはそれらの領域を適切なデータで埋めなくてはなりません。resize_term()関数はすべてのウィンドウのサイズ変更を試みます。ただし、パッド呼び出しの慣例により、アプリケーションとの追加のやり取りを行わないサイズ変更は行えません。
- curses.resizeterm(nlines, ncols)¶
現在の標準ウィンドウのサイズを指定された寸法に変更し、curses ライブラリが使用する、その他のウィンドウサイズを記憶しているデータ (特に SIGWINCH ハンドラ) を調整します。
- curses.get_escdelay()¶
set_escdelay()で設定した値を取得します。Added in version 3.9.
- curses.set_escdelay(ms)¶
キーボードで入力した単独のエスケープ文字と、カーソルキーやファンクションキーが送信するエスケープシーケンスを区別するため、エスケープ文字を読み込んだ後に待機する時間をミリ秒で設定します。
Added in version 3.9.
- curses.get_tabsize()¶
set_tabsize()で設定した値を取得します。Added in version 3.9.
- curses.set_tabsize(size)¶
curses ライブラリがウィンドウにタブ文字を追加する際、タブ文字を空白に変換するために使用する桁数を設定します。
Added in version 3.9.
- curses.setsyx(y, x)¶
仮想スクリーンのカーソルを y, x に設定します。y および x がどちらも
-1の場合、leaveok()が にTrueに設定されます。
- curses.setupterm(term=None, fd=-1)¶
端末を初期化します。term は端末名となる文字列または
Noneです。省略またはNoneの場合、環境変数TERMの値が使用されます。fd は送信される初期化シーケンスへのファイル記述子です。指定されないまたは-1の場合、sys.stdoutのファイル記述子が使用されます。端末が見つからないか、その terminfo データベースのエントリーを読み込めない場合、
curses.errorを送出します。 端末がすでに初期化されている場合、この関数は何もしません。注釈
setupterm()の後にinitscr()を呼び出すと、setupterm()が確保した端末がリークします。 curses ライブラリは現在の端末を 1 つだけ保持し、それまでに確保した端末を解放しないためです。
- curses.start_color()¶
プログラマがカラーを利用したい場合で、かつ他の何らかのカラー操作ルーチンを呼び出す前に呼び出さなくてはなりません。この関数は
initscr()を呼んだ直後に呼ぶようにしておくとよいでしょう。start_color()は 8 つの基本色 (黒、赤、緑、黄、青、マゼンタ、シアン、白) と、cursesモジュールの 2 つのグローバル変数COLORSおよびCOLOR_PAIRSを初期化します。 これらの変数には、端末がサポートできる色と色ペアの最大数が格納されます。 また、端末の色を端末の電源投入直後の値に戻します。
- curses.termattrs()¶
端末がサポートするすべてのビデオ属性を論理和した値を返します。この情報は、curses プログラムがスクリーンの見え方を完全に制御する必要がある場合に便利です。
- curses.termname()¶
使用中の端末名を bytes オブジェクトとして返します。 これは
setupterm()に渡された名前であり、名前が渡されなかった場合は環境変数TERMの値です。 curses ライブラリによっては、14 文字に切り詰められます。
- curses.tigetflag(capname)¶
terminfo 機能名 capname に対応する真偽値の機能値を整数で返します。capname が真偽値で表せる機能値でない場合
-1を返し、機能がキャンセルされているか、端末記述上に見つからない場合0を返します。先に
setupterm()(またはinitscr()) を呼び出す必要があります。
- curses.tigetnum(capname)¶
terminfo 機能名 capname に対応する数値の機能値を整数で返します。capname が数値で表せる機能値でない場合
-2を返し、機能がキャンセルされているか、端末記述上に見つからない場合-1を返します。先に
setupterm()(またはinitscr()) を呼び出す必要があります。
- curses.tigetstr(capname)¶
terminfo の機能名 capname に対応する文字列機能の値を bytes オブジェクトとして返します。 capname が terminfo の「文字列機能」でない場合や、端末の記述で取り消されているか存在しない場合は、
Noneを返します。先に
setupterm()(またはinitscr()) を呼び出す必要があります。
- curses.tparm(str[, ...])¶
bytes オブジェクト str に指定したパラメータを適用します。 str は terminfo データベースから取得した、パラメータを含むバイト文字列でなければなりません。 例えば、
tparm(tigetstr("cup"), 5, 3)はb'\033[6;4H'を返すことがありますが、正確な結果は端末の種類によって異なります。 整数のパラメータを最大 9 個指定できます。先に
setupterm()(またはinitscr()) を呼び出す必要があります。
- curses.typeahead(fd)¶
先読みチェックに使うためのファイル記述子 fd を指定します。fd が
-1の場合、先読みチェックは行われません。curses ライブラリはスクリーンを更新する間、先読み文字列を定期的に検索することで "行はみ出し最適化 (line-breakout optimization)" を行います。入力が得られ、かつ入力は端末からのものである場合、現在行おうとしている更新は refresh や doupdate を再度呼び出すまで先送りにします。この関数は異なるファイル記述子で先読みチェックを行うように指定することができます。
- curses.unctrl(ch)¶
文字 ch の印字可能な表現を bytes オブジェクトとして返します。 属性と色ペアは無視されます。 制御文字は、
b'^C'のようにキャレットの後に文字を続けた形で表されます。 印字可能な文字はそのままです。
- curses.ungetch(ch)¶
ch をプッシュし、次に
getch()を呼び出した時にその値が返るようにします。ch には、整数 (キーコードまたはエンコードされたバイトのコード)、1 バイト、またはエンコードすると 1 バイトになる長さ 1 の文字列を指定できます。
注釈
getch()を呼び出すまでは ch は一つしかプッシュできません。
- curses.update_lines_cols()¶
モジュール変数
LINESとCOLSを更新します。 手動によるスクリーンのサイズ変更を検出する際に役立ちます。Added in version 3.5.
- curses.unget_wch(ch)¶
ch をプッシュし、次に
get_wch()を呼び出した時にその値が返るようにします。ch には、整数 (キーコードではなく文字コード) または長さ 1 の文字列を指定できます。
注釈
get_wch()を呼び出すまでは ch は一つしかプッシュできません。Added in version 3.3.
- curses.use_env(flag)¶
この関数を使う場合、
initscr()または newterm を呼ぶ前に呼び出さなくてはなりません。flag がFalseの場合、環境変数LINESおよびCOLUMNSの値 (デフォルトで使用されます) の値が設定されていたり、curses がウィンドウ内で動作して (この場合LINESやCOLUMNSが設定されていないとウィンドウのサイズを使います) いても、terminfo データベースに指定された lines および columns の値を使います。
- curses.use_default_colors()¶
assume_default_colors(-1, -1)と等価です。
- curses.wrapper(func, /, *args, **kwargs)¶
curses を初期化し、呼び出し可能なオブジェクト func (その他の curses を使用するアプリケーション) を呼び出します。アプリケーションが例外を送出した場合、この関数は端末を例外を再送出する前に正常な状態に戻し、トレースバックを作成します。その後、呼び出し可能オブジェクト func には、第一引数としてメインウィンドウ 'stdscr' が、続いて
wrapper()に渡されたその他の引数が渡されます。func を呼び出す前、wrapper()は cbreak モードをオンに、エコーをオフに、端末キーパッドを有効にし、端末が色表示をサポートしている場合は色を初期化します。終了時 (通常終了、例外による終了のどちらでも)、cooked モードに戻し、エコーをオンにし、端末キーパッドを無効にします。
ウィンドウオブジェクト¶
- window.addch(ch[, attr])¶
- window.addch(y, x, ch[, attr])
(y, x)にある文字 ch を属性 attr で描画します。このときその場所に以前描画された文字は上書きされます。デフォルトでは、文字の位置および属性はウィンドウオブジェクトにおける現在の設定になります。注釈
ウィンドウ、サブウィンドウ、パッドの外側に書き込むと
curses.errorが送出されます。 ウィンドウ、サブウィンドウ、パッドの右下隅に書き込もうとすると、文字を表示した後に例外が送出されます。
- window.addnstr(str, n[, attr])¶
- window.addnstr(y, x, str, n[, attr])
文字列 str から最大で n 文字を
(y, x)に属性 attr で描画します。以前ディスプレイにあった内容はすべて上書きされます。
- window.addstr(str[, attr])¶
- window.addstr(y, x, str[, attr])
(y, x)に文字列 str を属性 attr で描画します。以前ディスプレイにあった内容はすべて上書きされます。注釈
ウィンドウ、サブウィンドウ、パッドの外側に書き込むと
curses.errorが送出されます。 ウィンドウ、サブウィンドウ、パッドの右下隅に書き込もうとすると、文字列を表示した後に例外が送出されます。この Python モジュールのバックエンドである ncurses のバグにより、ウィンドウのサイズ変更時にセグメンテーション違反が発生することがありました。 このバグは ncurses-6.1-20190511 で修正されました。 それ以前の ncurses を使用せざるを得ない場合は、改行を含む str で
addstr()を呼び出さず、代わりに各行に対して個別にaddstr()を呼び出すことで回避できます。
- window.attroff(attr)¶
現在のウィンドウへのすべての書き込みに適用される "バックグラウンド" の属性セットから attr を取り除きます。
- window.attron(attr)¶
現在のウィンドウへのすべての書き込みに適用される「背景」の属性の集合に、属性 attr を追加します。
- window.attrset(attr)¶
"バックグラウンド" の属性セットを attr に設定します。初期値は
0(属性なし) です。
- window.bkgd(ch[, attr])¶
ウィンドウ上の背景プロパティを、attr を属性とする文字 ch に設定します。変更はそのウィンドウ中のすべての文字に以下のようにして適用されます:
ウィンドウ中のすべての文字の属性が新たな背景属性に変更されます。
以前の背景文字が出現すると、常に新たな背景文字に変更されます。
- window.bkgdset(ch[, attr])¶
ウィンドウの背景を設定します。ウィンドウの背景は、文字と何らかの属性の組み合わせから成り立ちます。背景情報の属性の部分は、ウィンドウ上に描画されている空白でないすべての文字と組み合わされ (OR され) ます。空白文字には文字部分と属性部分の両方が組み合わされます。背景は文字のプロパティとなり、スクロールや行/文字の挿入/削除操作の際には文字と一緒に移動します。
- window.border([ls[, rs[, ts[, bs[, tl[, tr[, bl[, br]]]]]]]])¶
ウィンドウの縁に境界線を描画します。各引数には境界の特定部分を表現するために使われる文字を指定します; 詳細は以下のテーブルを参照してください。
注釈
どの引数も、
0を指定した場合デフォルトの文字が使われるようになります。キーワード引数は使うことが できません。デフォルトはテーブル内で示しています:引数
説明
デフォルト値
ls
左側
rs
右側
ts
上側
bs
下側
tl
左上の角
tr
右上の角
bl
左下の角
br
右下の角
- window.box([vertch, horch])¶
border()と同様ですが、ls および rs は共に vertch で、ts および bs は共に horch です。この関数では、角に使われるデフォルト文字が常に使用されます。
- window.chgat(attr)¶
- window.chgat(num, attr)
- window.chgat(y, x, attr)
- window.chgat(y, x, num, attr)
現在のカーソル位置、または指定した位置
(y, x)にある num 文字の属性を設定します。 num を指定しないか-1にした場合は、行末までのすべての文字に属性が設定されます。(y, x)を指定した場合、この関数はカーソルをその位置に移動します。 変更した行はtouchline()メソッドで変更済みと記録され、次回のウィンドウ更新時に内容が再表示されます。
- window.clrtobot()¶
カーソル位置からウィンドウの末尾までを消去します。 まずカーソルのある行より下のすべての行を消去し、次に
clrtoeol()と同等の処理を行います。
- window.clrtoeol()¶
カーソル位置から行末までを消去します。
- window.cursyncup()¶
ウィンドウのすべての親ウィンドウについて、現在のカーソル位置を反映するよう更新します。
- window.delch([y, x])¶
カーソルの下、または指定した
(y, x)の位置の文字を削除します。 同じ行の右側にある文字はすべて 1 文字分左に移動します。
- window.deleteln()¶
カーソルの下にある行を削除します。後続の行はすべて 1 行上に移動します。
- window.derwin(begin_y, begin_x)¶
- window.derwin(nlines, ncols, begin_y, begin_x)
"derive window (ウィンドウを派生する)" の短縮形です。
derwin()はsubwin()と同じですが、begin_y および begin_x はスクリーン全体の原点ではなく、ウィンドウの原点からの相対位置です。派生したウィンドウオブジェクトが返されます。
- window.enclose(y, x)¶
与えられた文字セル座標をスクリーン原点から相対的なものとし、ウィンドウの中に含まれるかを調べて、
TrueまたはFalseを返します。スクリーン上のウィンドウの一部がマウスイベントの発生場所を含むかどうかを調べる上で便利です。バージョン 3.10 で変更: 以前は
TrueまたはFalseではなく、1または0を返していました。
- window.encoding¶
メソッドの文字列の引数をエンコードする際、およびワイド文字をサポートしないビルドで結果をデコードする際に使用するエンコーディングです。 例えば
window.subwin()でサブウィンドウを作成すると、encoding 属性は親ウィンドウから継承されます。 デフォルトでは現在のロケールのエンコーディングが使用されます (locale.getencoding()を参照)。Added in version 3.3.
- window.erase()¶
ウィンドウをクリアします。
- window.getbegyx()¶
左上隅の座標をタプル
(y, x)として返します。
- window.getch([y, x])¶
y、x が指定されていればカーソルをそこに移動してからキー入力を読み取り、整数として返します。 ウィンドウがパッドではなく、前回の更新以降に変更されていれば、まず更新します。 キーが押されるまで待機しますが、読み取りが非ブロッキングの場合やタイムアウトした場合は
-1を返します (nodelay()とtimeout()を参照)。通常のキーは、現在のロケールのエンコーディングで表した 1 バイトのコードとして返されるため、複数バイトでエンコードされる文字を読み取るには複数回の呼び出しが必要です。 例えば UTF-8 ロケールでは、
'é'は195、続いて169として読み取られます。 1 文字として読み取るにはget_wch()を使用してください。キーパッドモード (
keypad()を参照) では、ファンクションキーやその他の特殊キーは、通常のキーと区別できる KEY_* 定数 のいずれかとして返されます。 それ以外の場合、またはエスケープシーケンスが時間内に到着しなかった場合 (notimeout()とset_escdelay()を参照)、バイトが 1 つずつ返されます。echo モード (
echo()を参照) では、addch()と同様にキーがウィンドウに追加されます。 特殊キーはエコーバックされません。
- window.get_wch([y, x])¶
y、x が指定されていればカーソルをそこに移動してからキー入力を読み取り、1 文字の
strとして返します。 ウィンドウがパッドではなく、前回の更新以降に変更されていれば、まず更新します。 キーが押されるまで待機しますが、読み取りが非ブロッキングの場合やタイムアウトした場合はerrorを送出します (nodelay()とtimeout()を参照)。キーパッドモード (
keypad()を参照) では、ファンクションキーやその他の特殊キーは、整数である KEY_* 定数 のいずれかとして返されます。 それ以外の場合、またはエスケープシーケンスが時間内に到着しなかった場合 (notimeout()とset_escdelay()を参照)、文字が 1 つずつ返されます。echo モード (
echo()を参照) では、addch()と同様にキーがウィンドウに追加されます。 特殊キーはエコーバックされません。Added in version 3.3.
- window.getkey([y, x])¶
getch()と同様にキー入力を読み取りますが、strとして返します。 通常のキーはバイトを Latin-1 でデコードした 1 文字の文字列として、特殊キーは'KEY_UP'のような名前として返します (keyname()を参照)。 入力がない場合、-1を返す代わりにerrorを送出します。
- window.getmaxyx()¶
ウィンドウの高さおよび幅を表すタプル
(y, x)を返します。
- window.getparyx()¶
親ウィンドウ中におけるウィンドウの開始位置をタプル
(y, x)で返します。ウィンドウに親ウィンドウがない場合(-1, -1)を返します。
- window.getstr()¶
- window.getstr(n)
- window.getstr(y, x)
- window.getstr(y, x, n)
y、x が指定されていればカーソルをそこに移動してから、基本的な行編集機能を使ってユーザの入力を 1 行読み取ります。 末尾の改行を除き、現在のロケールのエンコーディングの bytes オブジェクトとして返します。 最大 n バイトを読み取ります。 n のデフォルト値は 2047 で、この値を超えることはできません。
バージョン 3.14 で変更: n の最大値が 1023 から 2047 に増えました。
- window.getyx()¶
ウィンドウの左上角からの相対で表した現在のカーソル位置をタプル
(y, x)で返します。
- window.hline(ch, n[, attr])¶
- window.hline(y, x, ch, n[, attr])
(y, x)を始点として、属性 attr の文字 ch からなる長さ n の水平線を表示します。 使用できるセルが n 個に満たない場合、線はウィンドウの右端で止まります。
- window.idcok(flag)¶
flag が
Falseの場合、curses は端末のハードウェアによる文字挿入/削除機能を使おうとしなくなります; flag がTrueならば、文字挿入/削除は有効にされます。curses が最初に初期化された際には文字挿入/削除はデフォルトで有効になっています。
- window.idlok(flag)¶
flag が
Trueの場合、cursesはハードウェアの行編集機能を使用しようとします。 それ以外の場合、curses はその機能を使用しません。
- window.immedok(flag)¶
flag が
Trueならば、ウィンドウイメージ内における何らかの変更があるとウィンドウを更新するようになります; すなわち、refresh()を自分で呼ばなくても良くなります。とはいえ、wrefresh を繰り返し呼び出すことになるため、この操作はかなりパフォーマンスを低下させます。デフォルトでは無効になっています。
- window.inch([y, x])¶
ウィンドウ内の指定した位置の文字を返します。 下位 8 ビットが文字自体で、上位ビットが属性です。
A_CHARTEXTとA_ATTRIBUTESのビットマスクでそれぞれを取り出し、pair_number()で色ペアを取り出せます。 文字のバイトは、instr()と同様に、セルの文字をロケールのエンコーディングで表したバイトです。 ワイド文字をサポートするビルドでは、現在のロケールで 1 バイトに収まらない文字の文字バイトは0になります。 そのような文字を読み取るにはinstr()を使用してください。
- window.insch(ch[, attr])¶
- window.insch(y, x, ch[, attr])
カーソルの下、または指定した
(y, x)の位置の文字の前に、属性 attr の文字 ch を挿入します。 カーソルの右側の文字はすべて 1 文字分右に移動し、行の右端の文字は失われます。 カーソル位置は変わりません (y、x が指定されていれば、その位置に移動した後での位置です)。
- window.insdelln(nlines)¶
指定されたウィンドウの現在の行の上に nlines 行を挿入します。 最下部の nlines 行は失われます。 nlines が負の場合は、カーソルのある行からその絶対値に相当する行数を削除し、残りの行を上に移動します。 最下部の同じ行数分は消去されます。 現在のカーソル位置は変わりません。
- window.insertln()¶
カーソルの下に空行を 1 行入れます。それ以降の行は 1 行づつ下に移動します。
- window.insnstr(str, n[, attr])¶
- window.insnstr(y, x, str, n[, attr])
カーソルの下の文字の前に、最大 n 文字の文字列を (行に収まるだけ) 挿入します。 n が負の場合、文字列全体を挿入します。 カーソルの右側の文字はすべて右に移動し、行の右端の文字は失われます。 カーソル位置は変わりません (y、x が指定されていれば、その位置に移動した後での位置です)。
- window.insstr(str[, attr])¶
- window.insstr(y, x, str[, attr])
キャラクタ文字列を (行に収まるだけ) カーソルより前に挿入します。カーソルの右側にある文字はすべて右にシフトし、行の右端の文字は失われます。カーソル位置は (y, x が指定されていた場合はそこに移動しますが、その後は) 変化しません。
- window.instr([n])¶
- window.instr(y, x[, n])
現在のカーソル位置、または指定した y、x から行末までのウィンドウ内のテキストを読み取り、現在のロケールのエンコーディングの bytes オブジェクトとして返します。 属性と色ペアは取り除かれます。 最大 n バイトを読み取ります。 n のデフォルト値は 2047 で、この値を超えることはできません。
バージョン 3.14 で変更: n の最大値が 1023 から 2047 に増えました。
- window.is_linetouched(line)¶
指定した行が、最後に
refresh()を呼んだ時から変更されている場合にTrueを返します; そうでない場合にはFalseを返します。line が現在のウィンドウ上の有効な行でない場合、curses.error例外を送出します。
- window.is_wintouched()¶
指定したウィンドウが、最後に
refresh()を呼んだ時から変更されている場合にTrueを返します; そうでない場合にはFalseを返します。
- window.keypad(flag)¶
flag が
Trueの場合、一部のキー (キーパッド、ファンクションキー) が生成するエスケープシーケンスをcursesが解釈します。 flag がFalseの場合、エスケープシーケンスは入力ストリーム内にそのまま残されます。 キーパッドモードはデフォルトでは無効ですが、wrapper()はメインウィンドウに対して有効にします。
- window.leaveok(flag)¶
flag が
Trueの場合、更新時にカーソルを「カーソル位置」に移動せず、そのままの位置に残します。 これにより、可能な限りカーソルの移動を減らします。flag が
Falseの場合、カーソルは更新の際に常に "カーソル位置" に移動します。
- window.move(new_y, new_x)¶
カーソルを
(new_y, new_x)に移動します。
- window.mvderwin(y, x)¶
ウィンドウを親ウィンドウの中で移動します。ウィンドウのスクリーン相対となるパラメタ群は変化しません。このルーチンは親ウィンドウの一部をスクリーン上の同じ物理位置に表示する際に用いられます。
- window.mvwin(new_y, new_x)¶
ウィンドウの左上角が
(new_y, new_x)になるように移動します。ウィンドウの一部でもスクリーンの外に出る位置への移動はエラーです。 ウィンドウは移動せず、
curses.errorが送出されます。
- window.notimeout(flag)¶
flag が
Trueの場合、エスケープシーケンスはタイムアウトしなくなります。flag が
Falseの場合、数ミリ秒間の間エスケープシーケンスは解釈されず、入力ストリーム中にそのままの状態で残されます。
- window.noutrefresh()¶
- window.noutrefresh(pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol)
更新をマークはしますが待機します。この関数はウィンドウのデータ構造を表現したい内容を反映するように更新しますが、物理スクリーン上に反映させるための強制更新を行いません。更新を行うためには
doupdate()を呼び出します。6 つの引数を指定できるのは、ウィンドウが
newpad()で作成されたパッドである場合だけで、その場合はすべて必須です。 意味はrefresh()のものと同じです。
- window.overlay(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol])¶
ウィンドウを destwin の上に重ね書き (overlay) します。ウィンドウは同じサイズである必要はなく、重なっている領域だけが複写されます。この複写は非破壊的です。これは現在の背景文字が destwin の内容を上書きしないことを意味します。
複写領域をきめ細かく制御するために、
overlay()の第二形式を使うことができます。sminrow および smincol は元のウィンドウの左上の座標で、他の変数は destwin 内の矩形を表します。
- window.overwrite(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol])¶
destwin の上にウィンドウの内容を上書き (overwrite) します。ウィンドウは同じサイズである必要はなく、重なっている領域だけが複写されます。この複写は破壊的です。これは現在の背景文字が destwin の内容を上書きすることを意味します。
複写領域をきめ細かく制御するために、
overwrite()の第二形式を使うことができます。sminrow および smincol は元のウィンドウの左上の座標で、他の変数は destwin 内の矩形を表します。
- window.putwin(file)¶
ウィンドウに関連付けられているすべてのデータを与えられたファイルオブジェクトに書き込みます。この情報は後に
getwin()関数を使って取得することができます。
- window.redrawln(beg, num)¶
beg 行から始まる num スクリーン行の表示内容が壊れており、次の
refresh()呼び出しで完全に再描画されなければならないことを通知します。
- window.refresh([pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol])¶
ディスプレイを即時更新し (実際のウィンドウとこれまでの描画/削除メソッドの内容とを同期し) ます。
6 つの引数を指定できるのは、ウィンドウが
newpad()で作成されたパッドである場合だけで、その場合はすべて必須です。 これらの追加のパラメータは、パッドとスクリーンのどの部分を使用するかを示すために必要です。 pminrow と pmincol はパッド内の表示する矩形の左上隅を指定します。 sminrow、smincol、smaxrow、smaxcol はスクリーン上に表示する矩形の端を指定します。 両方の矩形は同じ大きさでなければならないため、パッド内の表示する矩形の右下隅はスクリーン座標から計算されます。 両方の矩形は、それぞれの構造の内部に完全に収まっていなければなりません。 pminrow、pmincol、sminrow、smincol の負の値はゼロとして扱われます。
- window.resize(nlines, ncols)¶
curses ウィンドウの記憶域を、指定値のサイズに調整するため再割当てします。サイズが現在の値より大きい場合、ウィンドウのデータは現在の背景設定 (
bkgdset()で設定) で埋められマージされます。
- window.scroll([lines=1])¶
スクリーンまたはスクロール領域をスクロールします。 lines が正の場合は lines 行上に、負の場合は下にスクロールします。
scrollok()でウィンドウのスクロールを有効にしていなければ、curses.errorを送出します。
- window.scrollok(flag)¶
ウィンドウのカーソルが、最下行で改行を行ったり最後の文字を入力したりした結果、ウィンドウやスクロール領域の縁からはみ出して移動した際の動作を制御します。flag が
Falseの場合、カーソルは最下行にそのままにしておかれます。flag がTrueの場合、ウィンドウは 1 行上にスクロールします。端末の物理スクロール効果を得るためにはidlok()も呼び出す必要があるので注意してください。
- window.setscrreg(top, bottom)¶
スクロール領域を top から bottom に設定します。スクロール動作はすべてこの領域で行われます。
- window.standend()¶
A_STANDOUT 属性をオフにします。端末によっては、この操作ですべての属性をオフにする副作用が発生します。
- window.standout()¶
A_STANDOUT 属性をオンにします。
- window.subpad(begin_y, begin_x)¶
- window.subpad(nlines, ncols, begin_y, begin_x)
左上隅が
(begin_y, begin_x)にあり、幅が ncols、高さが nlines のサブパッドを返します。 座標は親パッドからの相対座標です (スクリーン座標を使うsubwin()とは異なります)。 このメソッドはnewpad()で作成したパッドでのみ利用できます。
- window.subwin(begin_y, begin_x)¶
- window.subwin(nlines, ncols, begin_y, begin_x)
左上隅がスクリーンからの相対座標
(begin_y, begin_x)にあり、幅が ncols、高さが nlines のサブウィンドウを返します。デフォルトでは、サブウィンドウは指定された場所からウィンドウの右下角まで広がります。
- window.syncdown()¶
このウィンドウの上位のウィンドウのいずれかで更新(touch)された各場所をこのウィンドウ内でも更新します。このルーチンは
refresh()から呼び出されるので、手動で呼び出す必要はほとんどないはずです。
- window.syncup()¶
ウィンドウ内で更新 (touch) した場所を、上位のすべてのウィンドウ内でも更新します。
- window.timeout(delay)¶
ウィンドウのブロックまたは非ブロック読み込み動作を設定します。delay が負の場合、ブロック読み出しが使われ、入力を無期限で待ち受けます。delay がゼロの場合、非ブロック読み出しが使われ、入力待ちの文字がない場合
getch()は-1を返します。delay が正の値であれば、getch()は delay ミリ秒間ブロックし、ブロック後の時点で入力がない場合には-1を返します。
- window.touchline(start, count[, changed])¶
start 行から count 行が変更されたものとして扱います。 changed を指定した場合は、対象の行を変更済み (changed
=True) とするか、未変更 (changed=False) とするかを指定します。
- window.touchwin()¶
描画を最適化するために、ウィンドウ全体が変更されたかのように振舞わせます。
- window.vline(ch, n[, attr])¶
- window.vline(y, x, ch, n[, attr])
(y, x)を始点として、属性 attr の文字 ch からなる長さ n の垂直線を表示します。
定数¶
curses モジュールは以下のデータメンバを定義します:
- curses.version¶
モジュールの現在のバージョンを表す bytes オブジェクトです。
- curses.ncurses_version¶
ncurses ライブラリのバージョンの 3 つの成分 major、minor、patch を含む名前付きタプルです。 値はすべて整数です。 各成分には名前でもアクセスできるため、例えば
curses.ncurses_version[0]はcurses.ncurses_version.majorと等価です。利用可能な環境: ncurses ライブラリが使用されている場合。
Added in version 3.8.
- curses.COLORS¶
端末がサポートできる色の最大数です。
start_color()の呼び出し後にのみ定義されます。
- curses.COLOR_PAIRS¶
端末がサポートできる色ペアの最大数です。
start_color()の呼び出し後にのみ定義されます。
- curses.COLS¶
スクリーンの幅、すなわち列数です。
initscr()の呼び出し後にのみ定義されます。update_lines_cols()、resizeterm()、resize_term()により更新されます。
- curses.LINES¶
スクリーンの高さ、すなわち行数です。
initscr()の呼び出し後にのみ定義されます。update_lines_cols()、resizeterm()、resize_term()により更新されます。
文字セルの属性を指定するための定数が用意されています。 実際に利用できる定数はシステムによって異なります。
属性 |
意味 |
|---|---|
|
代替文字セットモード |
|
点滅モード |
|
太字モード |
|
低輝度モード |
|
非表示または空白モード |
|
イタリックモード |
|
通常の属性 |
|
保護モード |
|
背景色と前景色を反転 |
|
強調モード |
|
下線モード |
|
水平強調 |
|
左強調 |
|
下強調 |
|
右強調 |
|
上強調 |
|
垂直強調 |
Added in version 3.7: A_ITALIC が追加されました。
一部のメソッドが返す値から対応する属性を取り出すための定数が用意されています。
ビットマスク |
意味 |
|---|---|
|
属性を取り出すビットマスク |
|
文字を取り出すビットマスク |
|
色ペアフィールドの情報を取り出すビットマスク |
キーは KEY_ で始まる名前をもつ整数定数です。利用可能なキーキャップはシステムに依存します。
キー定数 |
キー |
|---|---|
|
最小のキー値 |
|
ブレークキー (Break, 信頼できません) |
|
下矢印 |
|
上矢印 |
|
左矢印 |
|
右矢印 |
|
ホームキー (Home, または上左矢印) |
|
バックスペース (Backspace, 信頼できません) |
|
ファンクションキー。64 個までサポートされています。 |
|
ファンクションキー n の値 |
|
行削除 (Delete line) |
|
行挿入 (Insert line) |
|
文字削除 (Delete char) |
|
文字挿入、または文字挿入モードへ入る |
|
文字挿入モードから抜ける |
|
画面消去 |
|
画面の末端まで消去 |
|
行末端まで消去 |
|
前に 1 行スクロール |
|
後ろ (逆方向) に 1 行スクロール |
|
次のページ (Page Next) |
|
前のページ (Page Prev) |
|
タブ設定 |
|
タブリセット |
|
すべてのタブをリセット |
|
入力または送信 (信頼できません) |
|
ソフトウェア (部分的) リセット (信頼できません) |
|
リセットまたはハードリセット (信頼できません) |
|
印刷 (Print) |
|
下ホーム (Home down) または最下行 (左下) |
|
キーパッドの左上キー |
|
キーパッドの右上キー |
|
キーパッドの中央キー |
|
キーパッドの左下キー |
|
キーパッドの右下キー |
|
Back tab |
|
開始 (Beg) |
|
キャンセル (Cancel) |
|
Close [閉じる] |
|
コマンド (Cmd) |
|
Copy [コピー] |
|
生成 (Create) |
|
終了 (End) |
|
Exit [終了] |
|
検索 (Find) |
|
ヘルプ (Help) |
|
マーク (Mark) |
|
メッセージ (Message) |
|
移動 (Move) |
|
次へ (Next) |
|
開く (Open) |
|
オプション |
|
前へ (Prev) |
|
Redo [やり直し] |
|
参照 (Ref) |
|
更新 (Refresh) |
|
置換 (Replace) |
|
再起動 (Restart) |
|
再開 (Resume) |
|
Save [保存] |
|
シフト付き Beg |
|
シフト付き Cancel |
|
シフト付き Command |
|
シフト付き Copy |
|
シフト付き Create |
|
シフト付き Delete char |
|
シフト付き Delete line |
|
選択 (Select) |
|
シフト付き End |
|
シフト付き Clear line |
|
シフト付き Exit |
|
シフト付き Find |
|
シフト付き Help |
|
シフト付き Home |
|
シフト付き Input |
|
シフト付き Left arrow |
|
シフト付き Message |
|
シフト付き Move |
|
シフト付き Next |
|
シフト付き Options |
|
シフト付き Prev |
|
シフト付き Print |
|
シフト付き Redo |
|
シフト付き Replace |
|
シフト付き Right arrow |
|
シフト付き Resume |
|
シフト付き Save |
|
シフト付き Suspend |
|
シフト付き Undo |
|
一時停止 (Suspend) |
|
Undo [元に戻す] |
|
マウスイベント通知 |
|
端末リサイズイベント |
|
最大キー値 |
VT100 とそのソフトウェアエミュレーション (X 端末エミュレータなど) では、通常は少なくとも 4 つのファンクションキー (KEY_F1、KEY_F2、KEY_F3、KEY_F4) が利用でき、矢印キーはそれぞれ KEY_UP、KEY_DOWN、KEY_LEFT、KEY_RIGHT に対応付けられています。
PC キーボードのあるマシンでは、矢印キーと 12 個のファンクションキーがあると考えてよいでしょう (古い PC キーボードにはファンクションキーが 10 個しかない場合もあります)。
また、以下のキーパッドの対応付けが標準です:
キーキャップ |
定数 |
|---|---|
Insert |
KEY_IC |
Delete |
KEY_DC |
Home |
KEY_HOME |
End |
KEY_END |
Page Up |
KEY_PPAGE |
Page Down |
KEY_NPAGE |
代替文字セットを以下の表に列挙します。これらは VT100 端末から継承したものであり、X 端末のようなソフトウェアエミュレーション上で一般に利用可能なものです。グラフィックが利用できない場合、curses は印字可能 ASCII文字による粗雑な近似出力を行います。
注釈
これらは initscr() が呼び出された後でしか利用できません。
ACS コード |
意味 |
|---|---|
|
右上隅の別名 |
|
黒四角ブロック |
|
白四角ブロック |
|
水平線の別名 |
|
左上隅の別名 |
|
上向き T 字罫線の別名 |
|
下向き T 字罫線 |
|
黒丸(bullet) |
|
チェッカーボードパタン (点描) |
|
下向き矢印 |
|
度記号 |
|
ダイアモンド |
|
大なりイコール |
|
水平線 |
|
ランタン(lantern) シンボル |
|
左向き矢印 |
|
小なりイコール |
|
左下隅 |
|
右下隅 |
|
左向き T 字罫線 |
|
不等号 |
|
パイ記号 |
|
プラスマイナス記号 |
|
大プラス記号 |
|
右向き矢印 |
|
右向き T 字罫線 |
|
スキャンライン 1 |
|
スキャンライン 3 |
|
スキャンライン 7 |
|
スキャンライン 9 |
|
右下隅の別名 |
|
垂直線の別名 |
|
右向き T 字罫線の別名 |
|
左下隅の別名 |
|
下向き T 字罫線の別名 |
|
左向き T 字罫線の別名 |
|
交差罫線または大プラス記号の別名 |
|
ポンドスターリング記号 |
|
上向き T 字罫線 |
|
上向き矢印 |
|
左上隅 |
|
右上隅 |
|
垂直線 |
getmouse() で使用するマウスボタン定数を以下の表に示します:
マウスボタン定数 |
意味 |
|---|---|
|
マウスボタン n が押された |
|
マウスボタン n が離された |
|
マウスボタン n がクリックされた |
|
マウスボタン n がダブルクリックされた |
|
マウスボタン n がトリプルクリックされた |
|
ボタンの状態変更時に Shift が押されていた |
|
ボタンの状態変更時に Control が押されていた |
|
ボタンの状態変更時に Alt が押されていた |
バージョン 3.10 で変更: 基盤となる curses ライブラリが BUTTON5_* 定数を提供する場合に、それらが公開されるようになりました。
以下のテーブルは定義済みの色を列挙したものです:
定数 |
色 |
|---|---|
|
黒 |
|
青 |
|
シアン (薄く緑がかった青) |
|
緑 |
|
マゼンタ (紫がかった赤) |
|
赤 |
|
白 |
|
黄色 |
curses.textpad --- curses プログラム用のテキスト入力ウィジェット¶
curses.textpad モジュールは、curses ウィンドウで基本的なテキスト編集を行う Textbox クラスを提供します。
このクラスは Emacs (したがって Netscape Navigator、BBedit 6.x、FrameMaker、その他多くのプログラム) に似たキーバインディングをサポートします。
このモジュールは、テキストボックスの枠を描く場合などに役立つ、矩形を描画する関数も提供します。
curses.textpad モジュールは以下の関数を定義します:
- curses.textpad.rectangle(win, uly, ulx, lry, lrx)¶
矩形を描画します。 最初の引数はウィンドウオブジェクトでなければならず、残りの引数はそのウィンドウからの相対座標です。 2 番目と 3 番目の引数は描画する矩形の左上隅の y 座標と x 座標、4 番目と 5 番目は右下隅の y 座標と x 座標です。 対応する端末 (xterm やその他の大半のソフトウェア端末エミュレータを含む) では、VT100/IBM PC の罫線文字を使用して矩形を描画します。 それ以外の場合は、ASCII のダッシュ、縦棒、プラス記号で描画します。
Textbox オブジェクト¶
以下のような Textbox オブジェクトをインスタンス生成することができます:
- class curses.textpad.Textbox(win, insert_mode=False)¶
テキストボックスウィジェットオブジェクトを返します。 win 引数には、テキストボックスを配置する curses の ウィンドウ オブジェクトを指定する必要があります。 insert_mode が真の場合、テキストボックスは入力した文字で既存のテキストを上書きせず、右にずらして挿入します。 テキストボックスの編集カーソルは、初期状態では配置先のウィンドウの左上隅、座標
(0, 0)にあります。 インスタンスのstripspacesフラグは、初期状態ではオンです。Textboxオブジェクトは以下のメソッドを持ちます:- edit(validate=None)¶
これは通常使用するエントリーポイントです。 終了用のキー操作が入力されるまで、編集のキー操作を受け付けます。 validate を指定する場合は関数でなければなりません。 入力されたキー操作ごとに、そのキー操作をパラメータとしてこの関数を呼び出し、結果に基づいて実行するコマンドを決めます。 関数が偽の値を返した場合、そのキー操作は無視されます。 このメソッドはウィンドウの内容を文字列として返します。 ウィンドウ内の空白を含むかどうかは
stripspaces属性に左右されます。
- do_command(ch)¶
コマンドのキー操作を 1 つ処理します。 編集を継続する場合は
1を、終了用のキー操作を処理した場合は0を返します。 サポートする特殊なキー操作は以下のとおりです:キーストローク
動作
Control-A
ウィンドウの左端に移動します。
Control-B
カーソルを左へ移動し、必要なら前の行に折り返します。
Control-D
カーソル下の文字を削除します。
Control-E
右端 (stripspaces がオフのとき) または行末 (stripspaces がオンのとき) に移動します。
Control-F
カーソルを右に移動し、必要なら次の行に折り返します。
Control-G
ウィンドウを終了し、その内容を返します。
Control-H
逆方向に文字を削除します。
Control-J
ウィンドウが 1 行の場合は終了し、それ以外の場合は次の行の先頭に移動します。
Control-K
行が空白行ならその行全体を削除し、そうでなければカーソル以降行末までを消去します。
Control-L
スクリーンを更新します。
Control-N
カーソルを下に移動します; 1 行下に移動します。
Control-O
カーソルの場所に空行を 1 行挿入します。
Control-P
カーソルを上に移動します; 1 行上に移動します。
移動操作は、カーソルがウィンドウの縁にあって移動ができない場合には何も行いません。場合によっては、以下のような同義のキーストロークがサポートされています:
定数
キーストローク
Control-B
Control-F
Control-P
Control-N
Control-h
他のキーストロークは、与えられた文字を挿入し、(行折り返し付きで) 右に移動するコマンドとして扱われます。
- gather()¶
ウィンドウの内容を文字列として返します; ウィンドウ内の空白が含められるかどうかは
stripspacesメンバ変数で決められます。
- stripspaces¶
この属性はウィンドウ内の空白領域の解釈方法を制御するためのフラグです。フラグがオンに設定されている場合、各行の末端にある空白領域は無視されます; すなわち、末端空白領域にカーソルが入ると、その場所の代わりに行の末尾にカーソルが移動します。また、末端の空白領域はウィンドウの内容を取得する際に剥ぎ取られます。