GUI

Python Tkinter widgets 発展的なウィジェット(11) Text

テキストウィジェットは、ユーザーが複数行のテキストを入力するためのUIを提供する。テキストウィジェットは、テーマ別Tkウィジェットではなく、従来のTkウィジェットに含まれる。

t = Text(parent, width=100, height=50)

widthとheightオプションは、テキストウィジェットに要求される画面サイズを、それぞれ文字数と行数で指定する。テキストの内容は任意に大きくできる。wrap設定オプションで、行の折り返しをどのように処理するかを制御できる。

  • none(折り返しなし、テキストは水平方向にスクロール可能)
  • char(任意の文字で折り返し)
  • word(単語の境界でのみ折り返し)

テキスト・ウィジェットを無効にして、編集不可にできる。テキストはテーマ型ウィジェットでないため、通常のstateメソッドやinstateメソッドは使えない。代わりに、設定オプションstateを使用し、disabledまたはnormalのいずれかに設定する。

txt['state'] = 'disabled'

スクロールはリストボックスと同じように動作する。xscrollcommand と yscrollcommand 設定オプションはテキストウィジェットを水平(および/または)垂直方向のスクロールバーを設定する。index は linenum.charnum という形式で、例えば5行目の最初の (0ベースの) 文字は 5.0 となる (1ベース)。

コンテンツ

テキストウィジェットには、エントリーウィジェットのようなリンクされた変数はない。テキストウィジェット全体の内容を取得するには、get 1.0 end メソッドを呼び出す。1.0 はテキストへのインデックスで、最初の行の最初の文字を意味し、end は最後の行の最後の文字のインデックスのショートカット。必要であれば,より小さな範囲のテキストを取得するために,他のインデックスを設定できる.

テキストをウィジェットに追加するには、insert index string メソッドを使う。index は line.char 形式で、テキストを挿入する前の文字を表す。テキスト範囲を削除するには delete start end メソッドを使う。