Ruby-tk-text

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

Ruby/TK-テキストウィジェット

説明

*Text* ウィジェットは、ユーザーが複数行のテキストを入力できるようにする領域を提供します。 テキストウィジェットは、テーマのあるTkウィジェットではなく、古典的なTkウィジェットの一部です。

テキストウィジェットは、テキスト上の3種類の注釈をサポートしています-

  • タグ-テキストの異なる部分を異なるフォントと色で表示できるようにします。 さらに、Tclコマンドをタグに関連付けて、キーストロークやマウスボタンの押下などの特定のアクションがテキストの特定の範囲で発生したときにスクリプトが呼び出されるようにすることができます。
  • マーク-注釈の2番目の形式は、テキスト内の浮動マーカーであるマークで構成されます。 マークは、編集中のテキスト内のさまざまな興味深い位置を追跡するために使用されます。
  • 埋め込みウィンドウ-注釈の3番目の形式では、任意のウィンドウをテキストウィジェットに埋め込むことができます。

ラベルには、テキスト文字列、ビットマップ、または画像を表示できます。 テキストが表示される場合は、すべて単一のフォントである必要がありますが、画面上で複数行を占めることができます(改行が含まれている場合、または_wraplength_オプションのために折り返しが発生する場合)。オプション。

構文

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

TkText.new(root) {
   .....Standard Options....
   .....Widget-specific Options....
}

標準オプション

  • バックグラウンド
  • ボーダー幅
  • カーソル
  • 輸出選択
  • font
  • 前景
  • ハイライト
  • ハイライトカラー
  • ハイライト
  • 挿入する
  • insertborderwidth
  • 挿入時間
  • 挿入時間
  • 挿入幅
  • padx
  • pady
  • 安心
  • selectbackground
  • selectborderwidth
  • selectforeground
  • セットグリッド
  • フォーカス
  • xscrollcommand *yscrollcommand

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

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

Sr.No. Options & Description
1
  • height *⇒ Integer

ウィンドウの希望する高さを文字単位で指定します。 少なくとも1つでなければなりません。

2
  • spacing1* ⇒ Integer

画面距離の標準形式のいずれかを使用して、ウィジェットの各テキスト行の上に追加のスペースを要求します。 行が折り返す場合、このオプションはディスプレイの最初の行にのみ適用されます。 このオプションは、タグの spacing1 オプションでオーバーライドできます。

3

spacing2 ⇒ Integer

折り返す行の場合(ディスプレイ上の複数の行をカバーするように)、このオプションは、テキストの単一行を表す表示行の間に追加のスペースを指定します。 値には、画面距離の標準形式があります。 このオプションは、タグの spacing オプションでオーバーライドできます。

4

spacing3 ⇒ Integer

画面距離の標準フォームのいずれかを使用して、ウィジェットの各テキスト行の下に追加のスペースを要求します。 行が折り返される場合、このオプションはディスプレイの最後の行にのみ適用されます。 このオプションは、タグの spacing3 オプションでオーバーライドできます。

5

state ⇒ String

テキストの2つの状態のいずれかを指定します: normal または disabled 。 テキストが無効になっていると、入力フォーカスがウィジェット内にある場合でも、文字が挿入または削除されず、挿入カーソルが表示されない場合があります。

6

tabs ⇒ String

ウィンドウのタブストップのセットを指定します。 オプションの値は、タブストップの位置を示す画面距離のリストで構成されています。 オプションで、次のリスト要素の各位置の後に、キーワード leftrightcenter 、または numeric のいずれかを続けることができます。 *左*がデフォルトです。

7
  • width *⇒ Integer

ウィンドウに必要な幅を文字単位で指定します。 フォントの幅が一定でない場合、文字「0」の幅が文字単位から画面単位への変換に使用されます。

8
  • wrap* ⇒ String

テキストウィンドウの1行に表示するには長すぎるテキスト内の行の処理方法を指定します。 値は none または char または word でなければなりません。

テストの操作

次の便利なメソッドは、テキストの内容を操作するために利用可能です-

  • * delete(index1、?index2?)*-テキストから一定範囲の文字を削除します。 index1とindex2の両方が指定されている場合、index1で指定された文字で始まり、index2の直前で停止するすべての文字を削除します。 _index2_が_index1_よりもテキスト内で後の位置を指定しない場合、文字は削除されません。 _index2_が指定されていない場合、_index1_の単一文字が削除されます。
  • * get(index1、?index2?)*-テキストから文字の範囲を返します。 戻り値は、インデックスが_index1_であるもので始まり、インデックスが_index2_であるものの直前で終わるテキスト内のすべての文字になります(_index2_の文字は返されません)。 _index2_が省略された場合、_index1_の単一文字が返されます。
  • * index(index)*-_line.char_の形式で_index_に対応する位置を返します。ここで、_line_は行番号で、_char_は文字番号です。
  • * insert(index、chars、?tagList、chars、tagList、…​?)*-index_の文字の直前にすべての_chars_引数を挿入します。 _index_がテキストの終わり(最後の改行の後の文字)を参照する場合、新しいテキストは代わりに最後の改行の直前に挿入されます。 単一の_chars_引数があり、_tagList_がない場合、新しいテキストは挿入ポイントの前の文字と後の文字の両方に存在するタグを受け取ります。これらの文字の1つにのみタグが存在する場合、新しいテキストには適用されません。 _tagList_が指定されている場合、タグ名のリストで構成されます。新しい文字は、挿入ポイントの周囲に存在するタグに関係なく、このリストのすべてのタグを受け取り、他のタグは受け取りません。 複数の_chars _- tagList_引数のペアが存在する場合、それぞれのペアに対して順番に個別の*挿入*ウィジェットコマンドが発行された場合と同じ効果が得られます。 最後の_tagList_引数は省略できます。
  • * xview(option、args)*-このコマンドは、ウィジェットのウィンドウ内のテキストの水平位置を照会および変更するために使用されます。
  • * yview(?args?)*-このコマンドは、ウィジェットのウィンドウ内のテキストの垂直位置を照会および変更するために使用されます。

イベントバインディング

Ruby/Tkはテキストのクラスバインディングを自動的に作成します。 以下に重要なバインディングをいくつかリストします。

  • マウスボタン1をクリックすると、挿入カーソルがマウスカーソルの下の文字の直前に配置され、このウィジェットに入力フォーカスが設定され、ウィジェット内の選択がクリアされます。 マウスボタン1でドラッグすると、挿入カーソルとマウスの下の文字の間の選択範囲がストロークアウトされます。
  • マウスボタン1でダブルクリックすると、マウスの下の単語が選択され、挿入カーソルが単語の先頭に配置されます。 ダブルクリック後にドラッグすると、単語全体で構成される選択範囲がストロークアウトされます。
  • マウスボタン1でトリプルクリックすると、マウスの下の行が選択され、行の先頭に挿入カーソルが配置されます。 トリプルクリック後にドラッグすると、行全体で構成される選択範囲がストロークされます。
  • Controlキーを押しながらマウスボタン1をクリックすると、選択に影響を与えることなく挿入カーソルの位置が変更されます。
  • 左および右キーは、挿入カーソルを1文字左または右に移動します。また、テキスト内の選択をクリアします。
  • 上矢印キーと下矢印キーは、挿入カーソルを1行上または下に移動し、テキスト内の選択をクリアします。 Shiftキーを押しながら上または右を入力すると、挿入カーソルが移動し、選択範囲が拡張されて新しい文字が含まれます。
  • Control-xは、テキストウィジェットで選択されているものをすべて削除します。
  • Control-oは、挿入カーソルを移動せずに挿入カーソルの前に改行文字を挿入することにより、新しい行を開きます。
  • Control-dは、挿入カーソルの右側の文字を削除します。

require 'tk'

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

text = TkText.new(root) do
   width 30
   height 20
   borderwidth 1
   font TkFont.new('times 12 bold')
   pack("side" => "right",  "padx"=> "5", "pady"=> "5")
end
text.insert 'end', "Hello!\n\ntext widget example"
Tk.mainloop

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

Ruby/Tk Text