Ruby-tk-spinbox
Ruby/TK-スピンボックスウィジェット
説明
*Spinbox* ウィジェットを使用すると、ユーザーは数字(または実際には、任意のリストのアイテム)を選択できます。 これは、現在の値を示すエントリのようなウィジェットと、可能な選択肢の範囲をステップスルーするために使用できる一対の小さな上/下矢印を組み合わせることによって行います。
スピンボックスは、ウィジェットのウィンドウ内に完全に収まるには長すぎる文字列を表示できます。 この場合、文字列の一部のみが表示されます。以下に説明するコマンドを使用して、ウィンドウの表示を変更できます。
スピンボックスは、スクロールバーと対話するために標準の xscrollcommand メカニズムを使用します。
構文
このウィジェットを作成する簡単な構文は次のとおりです-
TkSpinbox.new(root) {
.....Standard Options....
.....Widget-specific Options....
}
標準オプション
- アクティブ
- バックグラウンド
- ボーダー幅
- カーソル
- 輸出選択
- font
- 前景
- ハイライト
- ハイライトカラー
- ハイライト
- 正当化する
- 安心
- 繰り返し遅延
- 繰り返し間隔
- selectbackground
- selectborderwidth
- selectforeground
- フォーカス
- テキスト変数 *xscrollcommand
これらのオプションは前の章で説明されています。
ウィジェット固有のオプション
Sr.No. | Options & Description |
---|---|
1 |
スピンボタンに使用される背景色。 |
2 |
スピンボタンの上に使用するカーソル。 これが空の場合(デフォルト)、デフォルトのカーソルが使用されます。 |
3 |
上部のスピンボタンに使用されるレリーフ。 |
4 |
Spinbuttonが呼び出されるたびに呼び出すRuby/Tkコールバックを指定します。 コールバックには、既存のコールバック引数に対する_appended_という2つの引数があります。ウィジェットの現在の値とボタンを押す方向( up または down )です。 |
5 |
スピンボックスが無効なときに使用する背景色を指定します。 このオプションが空の文字列の場合、通常の背景色が使用されます。 |
6 |
スピンボックスが無効なときに使用する前景色を指定します。 このオプションが空の文字列の場合、通常の前景色が使用されます。 |
7 |
|
8 |
from ⇒ Integer
|
9 |
増分を指定する浮動小数点値。* from および *to と共に使用すると、ウィジェットの値は、スピンボタンが押されたときに increment によって調整されます(上に値が加算され、下に値が減算されます)。 |
10 |
state ⇒ String Spinboxの3つの状態、 normal 、 disabled 、または readonly のいずれかを指定します。 |
11 |
to ⇒ Integer
|
12 |
validate ⇒ String 検証が動作するモードを指定します: none 、 focus 、 focusin 、 focusout 、 key 、または all 。 デフォルトは none です。 検証が必要な場合は、使用するモードを明示的に指定する必要があります。 |
13 |
ウィジェットの入力を検証するときに評価するスクリプトを指定します。 |
14 |
適切なリスト値でなければなりません。 指定されている場合、Spinboxはこれらの値を使用して、最初の値から始めてその内容を制御します。 このオプションは、 from および to の範囲よりも優先されます。 |
15 |
ウィジェットのフォントの平均サイズの文字で、Spinboxウィンドウの目的の幅を示す整数値を指定します。 |
16 |
適切なブール値でなければなりません。 オンの場合、Spinboxはウィジェット内のデータの値をラップします。 |
検証段階
検証は、 validatecommand オプションをコールバックに設定することで機能します。コールバックは、validateオプションに従って次のように評価されます-
- なし-デフォルト。 これは検証が行われないことを意味します。
- focus -_validatecommand_は、Spinboxがフォーカスを受け取るか失うときに呼び出されます。
- focusin -_validatecommand_は、Spinboxがフォーカスを受け取ると呼び出されます。
- focusout -Spinboxがフォーカスを失うと、_validatecommand_が呼び出されます。
- key -_validatecommand_は、Spinboxが編集されるときに呼び出されます。
- all -_validatecommand_は上記のすべての条件に対して呼び出されます。
スピンボックスの操作
以下は、Spinboxで遊ぶいくつかの重要な方法のリストです-
- * delete(first、?last?)*-Spinboxの1つ以上の要素を削除します。 _First_は削除する最初の文字のインデックスで、_last_は最後に削除する文字の直後の文字のインデックスです。 _last_が指定されていない場合、デフォルトはfirst + 1になります。 単一の文字が削除されます。 このコマンドは空の文字列を返します。
- get -Spinboxの文字列を返します。
- * icursor(index)*-挿入カーソルがindexで指定された文字の直前に表示されるように調整します。 空の文字列を返します。
- * identify(x、y)-Spinboxの座標_x_および_y_に対応するウィンドウ要素の名前を返します。 戻り値は、 *none 、 buttondown 、 buttonup 、 entry のいずれかです。
- * index(index)*-インデックスに対応する数値インデックスを返します。
- * insert(index、string)*-indexで示される文字の直前にstringの文字を挿入します。 空の文字列を返します。
- * invoke(element)-指定された要素( *buttondown または buttonup )が呼び出され、それに関連付けられたアクションがトリガーされます。
- * set(?string?)*-f stringが指定されている場合、Spinboxはこの値を設定しようとします。そうでない場合は、単にSpinboxの文字列を返します。 検証がオンの場合、文字列を設定するときに検証が行われます。
- validate -このコマンドは、 validate オプションで指定された条件に関係なく、 validatecommand の評価を強制するために使用されます。 これは、一時的に validate オプションを all に設定することにより行われます。 0または1を返します。
- * xview(args)*-このコマンドは、ウィジェットのウィンドウ内のテキストの水平位置を照会および変更するために使用されます。
イベントバインディング
Tkは、デフォルトの動作を与えるSpinboxのクラスバインディングを自動的に作成します。 以下に重要な動作はほとんどありません-
- マウスボタン1をクリックすると、マウスカーソルの下の文字の直前に挿入カーソルが配置され、このウィジェットに入力フォーカスが設定され、ウィジェット内の選択がクリアされます。 マウスボタン1でドラッグすると、挿入カーソルとマウスの下の文字の間の選択範囲がストロークアウトされます。
- マウスボタン1をダブルクリックすると、マウスの下の単語が選択され、挿入カーソルが単語の先頭に配置されます。 ダブルクリック後にドラッグすると、単語全体で構成される選択範囲がストロークアウトされます。
- マウスボタン1でトリプルクリックすると、スピンボックス内のすべてのテキストが選択され、挿入カーソルが最初の文字の前に配置されます。
- Shiftキーを押しながらマウスボタン1でドラッグすると、選択範囲の両端を調整できます。これにより、ボタン1が押されたときにマウスカーソルに最も近い選択範囲の終わりが調整されます。 ドラッグする前にボタンをダブルクリックすると、選択は単語全体の単位で調整されます。
- Controlキーを押しながらマウスボタン1をクリックすると、選択に影響を与えずにSpinboxに挿入カーソルが配置されます。
- スピンボックスに通常の印刷文字が入力されると、挿入カーソルの位置に挿入されます。
- スピンボックスの表示は、マウスボタン2でドラッグして調整できます。 マウスを移動せずにマウスボタン2をクリックすると、選択内容がスピンボックスのマウスカーソルの位置にコピーされます。
- ボタン1が押されているときにマウスをスピンボックスの左側または右側にドラッグすると、スピンボックスは自動的にスクロールして、テキストをより多く表示します(マウスがウィンドウを離れた側にテキストが画面外にある場合) 。
- EndキーまたはControl-eを押すと、挿入カーソルがSpinboxの最後に移動し、Spinboxの選択がクリアされます。 Shift-Endキーを押すと、カーソルが最後に移動し、選択範囲がそのポイントまで拡張されます。
- Homeキー、またはControl-aは、挿入カーソルをSpinboxの先頭に移動し、Spinboxの選択をクリアします。 Shift + Homeキーを押すと、挿入カーソルがSpinboxの先頭に移動し、選択範囲がそのポイントまで拡張されます。
- Control-/は、スピンボックス内のすべてのテキストを選択します。
- Control- \は、スピンボックス内の選択をすべてクリアします。
- スピンボックスに選択項目がある場合、Deleteキーは選択項目を削除します。 選択範囲がない場合、挿入カーソルの右側の文字が削除されます。
- BackSpaceキーとControl-hは、Spinboxに選択がある場合、選択を削除します。 選択範囲がない場合、挿入カーソルの左側の文字が削除されます。
- Control-dは、挿入カーソルの右側の文字を削除します。
- Meta-dは、挿入カーソルの右側の単語を削除します。
- Control-kは、挿入カーソルの右側にあるすべての文字を削除します。
例
require 'tk'
root = TkRoot.new
root.title = "Window"
Sb = TkSpinbox.new(root) do
to 100
from 5
increment 5
pack("side" => "left", "padx"=> "50", "pady"=> "50")
end
Tk.mainloop
これは、次の結果を生成します-