Ruby-tk-entry

提供:Dev Guides
移動先:案内検索

Ruby/TK-エントリーウィジェット

説明

*Entry* は、値を入力するために使用できる単一行のテキストフィールドをユーザーに提示します。 名前、都市、パスワード、社会保障番号など、何でもかまいません。

構文

このウィジェットを作成する簡単な構文は次のとおりです-

TkEntry.new {
   .....Standard Options....
   .....Widget-specific Options....
}

標準オプション

  • バックグラウンド
  • ボーダー幅
  • カーソル
  • 輸出選択
  • font
  • 前景
  • ハイライト
  • ハイライトカラー
  • ハイライト
  • 正当化する
  • 安心
  • selectbackground
  • selectborderwidth
  • selectforeground
  • フォーカス
  • テキスト変数 *xscrollcommand

これらのオプションは前の章で説明されています。

ウィジェット固有のオプション

Sr.No. Options & Description
1
  • disabledbackground *⇒ String

エントリが無効なときに使用する背景色を指定します。 このオプションが空の文字列の場合、通常の背景色が使用されます。

2
  • disabledforeground *⇒ String

エントリが無効なときに使用する前景色を指定します。 このオプションが空の文字列の場合、通常の前景色が使用されます。

3
  • readonlybackground *⇒ String

エントリが読み取り専用の場合に使用する背景色を指定します。 このオプションが空の文字列の場合、通常の背景色が使用されます。

4
  • show* ⇒ String

このオプションを指定すると、エントリの実際の内容はウィンドウに表示されません。 代わりに、エントリの値の各文字は、「*」など、このオプションの値の最初の文字として表示されます。 これは、たとえば、エントリを使用してパスワードを入力する場合に便利です。 エントリ内の文字が選択され、他の場所にコピーされる場合、コピーされる情報は表示されるものであり、エントリの実際の内容ではありません。

5

state ⇒ String

エントリの3つの状態の1つを指定します: normaldisabled 、ま​​たは readonly 。 エントリが*読み取り専用*の場合、ウィジェットコマンドを使用して値を変更することはできず、入力フォーカスがウィジェット内にある場合でも挿入カーソルは表示されません。ウィジェットのコンテンツは引き続き選択できます。 エントリが*無効*の場合、値は変更されず、挿入カーソルは表示されず、内容は選択できず、エントリは別の色で表示されます。

6

validate ⇒ String

検証が動作するモードを指定します: nonefocusfocusinfocusoutkey 、または all 。 デフォルトは none です。 検証が必要な場合は、使用するモードを明示的に指定する必要があります。

7
  • validatecommand *⇒ String

入力ウィジェットへの入力を検証するときに評価するスクリプトを指定します。

8
  • width* ⇒ Integer

ウィジェットのフォントの平均サイズ文字で、入力ウィンドウの希望の幅を示す整数値を指定します。 値がゼロ以下の場合、ウィジェットは現在のテキストを保持するのに十分な大きさを選択します。

エントリーの検証

私たちは、次のように_validate_オプションに従って評価されるコールバックに_validatecommand_オプションを設定することにより、入力された値を検証することができます-

  • なし-デフォルト。 これは検証が行われないことを意味します。
  • focus -エントリがフォーカスを受け取ったとき、または失ったときにvalidatecommandが呼び出されます。
  • focusin -エントリがフォーカスを受け取ったときにvalidatecommandが呼び出されます。
  • focusout -エントリがフォーカスを失ったときにvalidatecommandが呼び出されます。
  • key -エントリが編集されるときにvalidatecommandが呼び出されます。
  • all -上記のすべての条件に対してvalidatecommandが呼び出されます。

エントリの操作

次の便利なメソッドは、エントリのコンテンツを操作するために利用可能です-

  • * delete(first、?last?)*-エントリの1つ以上の要素を削除します。 最初は削除する最初の文字のインデックスであり、最後は削除する最後の文字の直後の文字のインデックスです。 lastが指定されていない場合、デフォルトはfirst + 1になります。 単一の文字が削除されます。 このコマンドは空の文字列を返します。
  • get -エントリの文字列を返します。
  • * icursor(index)*-挿入カーソルがindexで指定された文字の直前に表示されるように調整します。 空の文字列を返します。
  • * index(index)*-インデックスに対応する数値インデックスを返します。
  • * insert(index、string)*-indexで示される文字の直前にstringの文字を挿入します。 空の文字列を返します。
  • * xview(args)*-このコマンドは、ウィジェットのウィンドウ内のテキストの水平位置を照会および変更するために使用されます。

イベントバインディング

Ruby/Tkは、次のデフォルトの動作を与えるエントリのクラスバインディングを自動的に作成します-

  • マウスボタン1をクリックすると、挿入カーソルがマウスカーソルの下の文字の直前に配置され、このウィジェットに入力フォーカスが設定され、ウィジェット内の選択がクリアされます。 マウスボタン1でドラッグすると、挿入カーソルとマウスの下の文字の間の選択範囲がストロークアウトされます。

  • マウスボタン1でダブルクリックすると、マウスの下の単語が選択され、挿入カーソルが単語の先頭に配置されます。 ダブルクリック後にドラッグすると、単語全体で構成される選択範囲がストロークアウトされます。

  • マウスボタン1でトリプルクリックすると、エントリ内のすべてのテキストが選択され、挿入カーソルが最初の文字の前に配置されます。

  • Shiftキーを押しながらマウスボタン1でドラッグすると、選択範囲の両端を調整できます。これにより、ボタン1が押されたときにマウスカーソルに最も近い選択範囲の終わりが調整されます。 ドラッグする前にボタンをダブルクリックすると、選択は単語全体の単位で調整されます。

  • Controlキーを押しながらマウスボタン1をクリックすると、選択に影響を与えずにエントリに挿入カーソルが配置されます。

  • エントリに通常の印刷文字が入力された場合、挿入カーソルの位置に挿入されます。

  • エントリのビューは、マウスボタン2でドラッグして調整できます。 マウスを移動せずにマウスボタン2をクリックすると、選択内容が挿入カーソルの位置のエントリにコピーされます。

  • ボタン1が押されているときにマウスを左側または右側のエントリからドラッグすると、エントリが自動的にスクロールしてテキストが表示されます(マウスがウィンドウを離れた側に画面外のテキストがある場合) 。

  • 左および右キーは、挿入カーソルを1文字左または右に移動します。また、エントリの選択をクリアし、選択アンカーを設定します。 Shiftキーを押しながら左または右を入力すると、挿入カーソルが移動し、選択範囲が拡張されて新しい文字が含まれます。 Control-LeftとControl-Rightは挿入カーソルを単語単位で移動し、Control-Shift-LeftとControl-Shift-Rightは挿入カーソルを単語単位で移動し、選択範囲を広げます。 Control-bとControl-fは、それぞれ左と右と同じように動作します。 Meta-bおよびMeta-fは、それぞれControl-LeftおよびControl-Rightと同じように動作します。

  • Homeキー、またはControl-aは、挿入カーソルをエントリの先頭に移動し、エントリ内の選択をクリアします。 Shift-Homeは、挿入カーソルをエントリの先頭に移動し、選択範囲をそのポイントまで拡張します。

  • Endキー、またはControl-eは、挿入カーソルをエントリの最後に移動し、エントリ内の選択をすべてクリアします。 Shift-Endキーを押すと、カーソルが最後に移動し、選択範囲がそのポイントまで拡張されます。

  • SelectキーとControl-Spaceは、選択アンカーを挿入カーソルの位置に設定します。 現在の選択には影響しません。 Shift-SelectおよびControl-Shift-Spaceは、選択範囲を挿入カーソルの現在の位置に調整し、以前に選択範囲がなかった場合はアンカーから挿入カーソルまでを選択します。

  • Control-/は、エントリ内のすべてのテキストを選択します。

  • Control- \は、エントリ内の選択をすべてクリアします。

  • F16キー(多くのSunワークステーションでコピーというラベルが付いています)またはMeta-wは、選択範囲がある場合、ウィジェットの選択範囲をクリップボードにコピーします。

  • F20キー(多くのSunワークステーションでCutとラベル付けされている)またはControl-wは、ウィジェット内の選択をクリップボードにコピーし、選択を削除します。 ウィジェットに選択範囲がない場合、これらのキーは効果がありません。

  • F18キー(多くのSunワークステーションに貼り付けられたラベル)またはControl-yは、クリップボードの内容を挿入カーソルの位置に挿入します。

  • エントリに選択項目がある場合、Deleteキーは選択項目を削除します。 選択範囲がない場合、挿入カーソルの右側の文字が削除されます。

  • BackSpaceキーとControl-hは、エントリに選択項目がある場合、選択を削除します。 選択範囲がない場合、挿入カーソルの左側の文字が削除されます。

  • Control-dは、挿入カーソルの右側の文字を削除します。

  • Meta-dは、挿入カーソルの右側の単語を削除します。

  • Control-kは、挿入カーソルの右側にあるすべての文字を削除します。

  • Control-wは、挿入カーソルの左側の単語を削除します。

  • Control-tは、挿入カーソルの右側にある2文字の順序を逆にします。

    *state* オプションを使用してエントリが無効になっている場合、エントリのビューは引き続き調整でき、エントリ内のテキストは選択できますが、挿入カーソルは表示されず、テキストの変更は行われません。

require 'tk'

root = TkRoot.new
root.title = "Window"

entry1 = TkEntry.new(root)
entry2 = TkEntry.new(root) do
   show '*'
end

variable1 = TkVariable.new
variable2 = TkVariable.new
entry1.textvariable = variable1
entry2.textvariable = variable2
variable1.value = "Enter any text value"
variable2.value = "Enter any confidential value"

entry1.place('height' => 25, 'width'  => 150, 'x'   => 10, y'   => 10)
entry2.place('height' => 25, 'width'  => 150, 'x'   => 10, 'y'   => 40)

Tk.mainloop

これは、次の結果を生成します-

Ruby/Tk Entry