24.2. "ttk" --- Tk のテーマ付きウィジェット
*******************************************

"ttk" モジュールは Tk 8.5 で導入された Tk のテーマ付きウィジェットへの
アクセスを提供します。 Tk 8.5 が無い環境で Python がコンパイルされてい
た場合でも、 Tile がインストールされていればこのモジュールはそれを使お
うとします。しかし、 X11 上のフォントのアンチエイリアスや透過ウィンド
ウ (X11 ではコンポジションウィンドウマネージャが必要です) などの新しい
Tk が提供している機能は使えません。

"ttk" の基本的なアイディアは、拡張可能性のためにウィジェットの動作を実
装するコードと見た目を記述するコードを分離することです。

参考:

  Tk Widget Styling Support
     Tk のテーマサポートの立ち上げのドキュメント


24.2.1. Ttk を使う
==================

Ttk を使い始めるために、モジュールをインポートします:

   import ttk

しかしこのようなコードでは

   from Tkinter import *

このように使いたいことがあるかもしれません

   from Tkinter import *
   from ttk import *

このように書くと、いくつかの "ttk" ウィジェット ("Button",
"Checkbutton", "Entry", "Frame", "Label", "LabelFrame", "Menubutton",
"PanedWindow", "Radiobutton", "Scale", "Scrollbar") は自動的に Tk ウィ
ジェットを置き換えます。

これにはプラットフォームをまたいでより良い見た目を得られるという、直接
的な利益がありますが、ウィジェットは完全な互換性を持っているわけではな
いことに注意してください。一番の違いは "fg" や "bg" やその他のスタイル
に関係するウィジェットのオプションが Ttk ウィジェットから無くなってい
ることです。同じ (もしくはより良い) 見た目にするためには "ttk.Style"
を使ってください。

参考:

  Converting existing applications to use the Tile widgets
     Tcl において、アプリケーションを新しいウィジェットに移行するとき
     に出てくる典型的な差異について書かれているテキスト


24.2.2. Ttk ウィジェット
========================

Ttk には 17 のウィジェットがあり、そのうち 11 は Tkinter に既にあるも
のです: "Button", "Checkbutton", "Entry", "Frame", "Label",
"LabelFrame", "Menubutton", "PanedWindow", "Radiobutton", "Scale",
"Scrollbar" 。新しい 6 つのウィジェットクラスは次のものです:
"Combobox", "Notebook", "Progressbar", "Separator", "Sizegrip",
"Treeview" 。これらのクラスは全て "Widget" の子クラスです。

上にも書いた通り、スタイルの記述コードと同様に見た目も変わっていること
に気付くでしょう。それを見せるために、非常に簡単な例を以下に示します。

Tk のコード

   l1 = Tkinter.Label(text="Test", fg="black", bg="white")
   l2 = Tkinter.Label(text="Test", fg="black", bg="white")

それに相当する Ttk のコード

   style = ttk.Style()
   style.configure("BW.TLabel", foreground="black", background="white")

   l1 = ttk.Label(text="Test", style="BW.TLabel")
   l2 = ttk.Label(text="Test", style="BW.TLabel")

TtkStyling についての情報は "Style" クラスの文書を読んでください。


24.2.3. ウィジェット
====================

"ttk.Widget" はTk のテーマ付きウィジェットがサポートしている標準のオプ
ションやメソッドを定義するもので、これを直接インスタンス化するものでは
ありません。


24.2.3.1. 標準オプション
------------------------

全ての "ttk" ウィジェットは以下のオプションを受け付けます:

   +-------------+----------------------------------------------------------------+
   | オプション  | 説明                                                           |
   +=============+================================================================+
   | class       | ウィンドウクラスを指定します。このクラスはオプションデータベー |
   |             | スに ウィンドウの他のオプションについて問い合わせを行うときに  |
   |             | 使われ、こ れによりウィンドウのデフォルトのバインドタグを決定  |
   |             | したり、ウィジェ ットのデフォルトのレイアウトやスタイルを選択  |
   |             | します。これは読み取り 専用のオプションでウィンドウが作られる  |
   |             | ときにのみ指定できます。                                       |
   +-------------+----------------------------------------------------------------+
   | cursor      | このウィジェットで使うマウスカーソルを指定します。空文字列 (デ |
   |             | フォ ルト) が設定されている場合は、カーソルは親ウィジェットの  |
   |             | ものを引き 継ぎます。                                          |
   +-------------+----------------------------------------------------------------+
   | takefocus   | キーボードによる移動のときにウィンドウがフォーカスを受け入れる |
   |             | かを 決定します。 0 、 1 、空文字列のいずれかを返します。 0 の |
   |             | 場合、キー ボードによる移動でそのウィンドウは常にスキップされ  |
   |             | ます。 1 の場合、 そのウィンドウが表示されているときに限り入力 |
   |             | フォーカスを受け入れま す。空文字列は、移動スクリプトによって  |
   |             | ウィンドウにフォーカスを当て るかどうかが決まることを意味しま  |
   |             | す。                                                           |
   +-------------+----------------------------------------------------------------+
   | style       | 独自のウィジェットスタイルを指定するのに使われます。           |
   +-------------+----------------------------------------------------------------+


24.2.3.2. スクロール可能ウィジェットのオプション
------------------------------------------------

以下のオプションはスクロールバーで操作されるウィジェットが持っているオ
プションです。

   +------------------+-----------------------------------------------------------+
   | option           | description                                               |
   +==================+===========================================================+
   | xscrollcommand   | 水平方向のスクロールバーとのやり取りに使われます。  ウィ  |
   |                  | ジェットのウィンドウが再描画されたとき, ウィジェットは    |
   |                  | scrollcommand に基いて Tcl コマンドを生成します。  通常こ |
   |                  | のオプションにはあるスクロールバーの "Scrollbar.set()" メ |
   |                  | ソッ ドが設定されます。こうすると、ウィンドウの見た目が変 |
   |                  | わったときにス クロールバーの状態も更新されます。         |
   +------------------+-----------------------------------------------------------+
   | yscrollcommand   | 垂直方向のスクロールバーとのやり取りに使われます。詳しい  |
   |                  | ことは、上 記を参照してください。                         |
   +------------------+-----------------------------------------------------------+


24.2.3.3. ラベルオプション
--------------------------

以下のオプションはラベルやボタンやボタンに類似したウィジェットが持って
いるオプションです。

   +----------------+-------------------------------------------------------------+
   | option         | description                                                 |
   +================+=============================================================+
   | text           | ウィジェットに表示される文字列を指定します。                |
   +----------------+-------------------------------------------------------------+
   | textvariable   | text オプションの代わりに使う値の変数名を指定します。       |
   +----------------+-------------------------------------------------------------+
   | underline      | このオプションを設定すると、文字列の中で下線を引く文字のイ  |
   |                | ンデック ス (0 基点) を指定します。下線が引かれた文字はショ |
   |                | ートカットとして 使われます。                               |
   +----------------+-------------------------------------------------------------+
   | image          | 表示する画像を指定します。これは 1 つ以上の要素を持つリスト |
   |                | です。先 頭の要素はデフォルトの画像名です。残りの要素は     |
   |                | "Style.map()" で定義 されているような状態名と値のペアの並び |
   |                | で、ウィジェットがある状態、 もしくはある状態の組み合わせに |
   |                | いるときに使用する別の画像を指定しま す。このリストにある全 |
   |                | ての画像は同じサイズでなればなりません。                    |
   +----------------+-------------------------------------------------------------+
   | compound       | text オプションと image オプションが両方とも指定されていた  |
   |                | 場合に、 テキストに対して画像をどう配置するかを指定します。 |
   |                | * text: テキストのみ表示する  * image: 画像のみ表示する  *  |
   |                | top, bottom, left, right: それぞれ画像をテキストの上、下、  |
   |                | 左、 右 に配置する。  * none: デフォルト。もしあれば画像を  |
   |                | 表示し、そうでなければテキス ト を表示する。                |
   +----------------+-------------------------------------------------------------+
   | width          | 0 より大きい場合、テキストラベルを作成するのにどれくらいの  |
   |                | スペース を使うかを文字の幅で指定します。 0 より小さい場合  |
   |                | 、最小の幅が指定さ れます。 0 もしくは無指定の場合、テキス  |
   |                | トラベルに対して自然な幅が使 われます。                     |
   +----------------+-------------------------------------------------------------+


24.2.3.4. 互換性オプション
--------------------------

   +----------+------------------------------------------------------------------+
   | option   | description                                                      |
   +==========+==================================================================+
   | state    | "normal" か "disabled" に設定され、 "disabled" 状態のビットをコ  |
   |          | ント ロールします。これは書き込み専用のオプションです: これを設  |
   |          | 定すると ウィジェットの状態を変更できますが、 "Widget.state()"   |
   |          | メソッドはこ のオプションに影響を及ぼしません。                  |
   +----------+------------------------------------------------------------------+


24.2.3.5. ウィジェットの状態
----------------------------

ウィジェットの状態は独立した状態フラグのビットマップです。

   +--------------+---------------------------------------------------------------+
   | フラグ       | description                                                   |
   +==============+===============================================================+
   | active       | マウスカーソルがウィジェットの上にあり、マウスのボタンをクリ  |
   |              | ックす ることで何らかの動作をさせられます。                   |
   +--------------+---------------------------------------------------------------+
   | disabled     | プログラムによってウィジェットは無効化されています。          |
   +--------------+---------------------------------------------------------------+
   | focus        | ウィジェットにキーボードフォーカスがあります。                |
   +--------------+---------------------------------------------------------------+
   | pressed      | ウィジェットは押されています。                                |
   +--------------+---------------------------------------------------------------+
   | selected     | チェックボタンやラジオボタンのようなウィジェットでの "オン"   |
   |              | や "チ ェック有" や "選択中" に当たります。                   |
   +--------------+---------------------------------------------------------------+
   | background   | Windows と Mac には "アクティブな" もしくは最前面のウィンドウ |
   |              | という 概念があります。背面のウィンドウにあるウィジェットには |
   |              | *background* 状態が設定され、最前面のウィンドウにあるウィジェ |
   |              | ットでは解除されま す。                                       |
   +--------------+---------------------------------------------------------------+
   | readonly     | ウィジェットはユーザからの変更を受け付けません。              |
   +--------------+---------------------------------------------------------------+
   | alternate    | ウィジェット特有の切り替え表示になっています。                |
   +--------------+---------------------------------------------------------------+
   | invalid      | ウィジェットの値が不正です。                                  |
   +--------------+---------------------------------------------------------------+

状態仕様は状態名の並びになっていて、状態名の先頭にはビットがオフになっ
ていることを示す感嘆符が付くことがあります。


24.2.3.6. ttk.Widget
--------------------

以下に書かれているメソッドに加えて、 "ttk.Widget" クラスは
"Tkinter.Widget.cget()" メソッドと "Tkinter.Widget.configure()" メソッ
ドをサポートしています。

class ttk.Widget

   identify(x, y)

      *x* *y* の位置にある要素の名前、もしくはその位置に要素が無ければ
      空文字列を返します。

      *x* と *y* はウィジェットに対するピクセル単位の座標です。

   instate(statespec, callback=None, *args, **kw)

      ウィジェットの状態をチェックします。コールバックが指定されていな
      い場合、ウィジェットの状態が *statespec* に一致していれば "True"
      、そうでなければ "False" を返します。コールバックが指定されてい
      て、ウィジェットの状態が *statespec* に一致している場合、引数に
      *args* を指定してそのコールバックを呼び出します。

   state([statespec=None])

      ウィジェットの状態を変更したり、取得したりします。 *statespec*
      が指定されている場合、それに応じてウィジェットの状態を設定し、ど
      のフラグが変更されたかを示す新しい *statespec* を返します。
      *statespec* が指定されていない場合、現在の状態フラグを返します。

   通常 *statespec* はリストもしくはタプルです。


24.2.4. コンボボックス
======================

"ttk.Combobox" ウィジェットはテキストフィールドと値のポップダウンリス
トを結び付けます。このウィジェットは "Entry" の子クラスです。

"Widget" から継承したメソッド ("Widget.cget()", "Widget.configure()",
"Widget.identify()", "Widget.instate()", "Widget.state()") と "Entry"
から継承したメソッド ("Entry.bbox()", "Entry.delete()",
"Entry.icursor()", "Entry.index()", "Entry.insert()",
"Entry.selection()", "Entry.xview()") に加え、このクラスには
"ttk.Combobox" で説明するメソッドがあります。


24.2.4.1. オプション
--------------------

このウィジェットは以下のオプションを受け付けます:

   +-------------------+----------------------------------------------------------+
   | option            | description                                              |
   +===================+==========================================================+
   | exportselection   | 真偽値を取る。設定されている場合、ウィジェットの選択はウ |
   |                   | ィンドウマ ネージャの選択とリンクしています。(例えば、   |
   |                   | "Misc.selection_get()" を実行することで得られます。)     |
   +-------------------+----------------------------------------------------------+
   | justify           | ウィジェットの中でテキストをどう配置するかを指定します。 |
   |                   | "left", "center", "right" のうちのどれか 1 つです。      |
   +-------------------+----------------------------------------------------------+
   | height            | ポップダウンリストの高さを行数で指定します。             |
   +-------------------+----------------------------------------------------------+
   | postcommand       | コンボボックスの値を表示する直前に呼び出される、         |
   |                   | ("Misc.register()" などで登録した) スクリプトです。どの  |
   |                   | 値を表示するかについても指定で きます。                  |
   +-------------------+----------------------------------------------------------+
   | state             | "normal", "readonly", "disabled" のどれか 1 つです。     |
   |                   | "readonly" 状 態では、直接入力値を編集することはできず、 |
   |                   | ユーザはドロップダウンリ ストから値を 1 つ選ぶことしかで |
   |                   | きません。 "normal" 状態では、テキス トフィールドは直接  |
   |                   | 編集できます。 "disabled" 状態では、コンボボック スは一  |
   |                   | 切反応しません。                                         |
   +-------------------+----------------------------------------------------------+
   | textvariable      | コンボボックスの値とリンクさせる変数名を指定します。その |
   |                   | 変数の値が 変更されたとき、ウィジェットの値は更新されま  |
   |                   | す。ウィジェットの値が 更新されたときも同様です。        |
   |                   | "Tkinter.StringVar" を参照してください。                 |
   +-------------------+----------------------------------------------------------+
   | values            | ドロップダウンリストに表示する値のリストを指定します。   |
   +-------------------+----------------------------------------------------------+
   | width             | 入力ウィンドウに必要な幅をウィジェットのフォントの平均的 |
   |                   | なサイズの 文字で測った、文字数を指定します。            |
   +-------------------+----------------------------------------------------------+


24.2.4.2. 仮想イベント
----------------------

コンボボックスウィジェットは、ユーザが値のリストから1つ選んだときに仮
想イベント **<<ComboboxSelected>>** を生成します。


24.2.4.3. ttk.Combobox
----------------------

class ttk.Combobox

   current([newindex=None])

      *newindex* が指定されている場合、コンボボックスの値がドロップダ
      ウンリストの *newindex* の位置にある値に設定されます。そうでない
      場合、現在の値のインデックスを、もしくは現在の値がリストに含まれ
      ていないなら -1 を返します。

   get()

      コンボボックスの現在の値を返します。

   set(value)

      コンボボックスの値を *value* に設定します。


24.2.5. ノートブック
====================

Ttk ノートブックウィジェットは複数のウィンドウを管理し、同時に 1 つの
ウィンドウを表示します。それぞれの子ウィンドウはタブの関連付けられてい
て、ユーザはそれを選択して表示されているウィンドウを切り替えます。


24.2.5.1. オプション
--------------------

このウィジェットは以下の固有のオプションを受け付けます:

   +-----------+------------------------------------------------------------------+
   | option    | description                                                      |
   +===========+==================================================================+
   | height    | 0 より大きな値が設定されている場合、 (内部のパディングやタブを含 |
   |           | ま ない) ペイン領域に必要な高さを指定します。設定されていない場  |
   |           | 合、全 てのペインの高さの最大値が使われます。                    |
   +-----------+------------------------------------------------------------------+
   | padding   | ノートブックの外周に付け足す追加の領域の量を指定します。パディン |
   |           | グ は最大 4 個の長さ指定のリストです: 左、上、右、下の順で指定し |
   |           | ます。 4 個より少ない場合、デフォルトで下は上と、右は左と、上は  |
   |           | 左と同じ値 が、それぞれ使われます。                              |
   +-----------+------------------------------------------------------------------+
   | width     | 0 より大きな値が指定されている場合、 (内部のパディングを含まない |
   |           | ) ペイン領域に必要な幅を指定します。設定されていない場合、全ての |
   |           | ペイ ンの幅の最大値が使われます。                                |
   +-----------+------------------------------------------------------------------+


24.2.5.2. タブオプション
------------------------

タブ用のオプションもあります:

   +-------------+----------------------------------------------------------------+
   | option      | description                                                    |
   +=============+================================================================+
   | state       | "normal", "disabled", "hidden" のうちどれか 1 つです。         |
   |             | "disabled" の場合、タブは選択することができません。 "hidden"   |
   |             | の場合、タブは表 示されません。                                |
   +-------------+----------------------------------------------------------------+
   | sticky      | ペイン領域の中に子ウィンドウがどう置かれるかを指定します。指定 |
   |             | する 値は "n", "s", "e", "w" からなる 0 文字以上の文字列です。 |
   |             | 配置マネー ジャの "grid()" と同様に、それぞれの文字は子ウィン  |
   |             | ドウが (北、南、 東、西の) どの辺に対して追随するかに対応して  |
   |             | います。                                                       |
   +-------------+----------------------------------------------------------------+
   | padding     | ノートブックとこのペインの間に付け足す追加の領域の量を指定しま |
   |             | す。 文法はこのウィジェットの padding オプションと同じです。   |
   +-------------+----------------------------------------------------------------+
   | text        | タブに表示するテキストを指定します。                           |
   +-------------+----------------------------------------------------------------+
   | image       | タブに表示する画像を指定します。 "Widget" のオプション image   |
   |             | の説明 を参照してください。                                    |
   +-------------+----------------------------------------------------------------+
   | compound    | text オプションと image オプションが両方指定されているときにテ |
   |             | キス トに対して画像をどう表示するかを指定します。指定する値に  |
   |             | ついては ラ ベルオプション を参照してください。                |
   +-------------+----------------------------------------------------------------+
   | underline   | テキスト中の下線を引く文字のインデックス (0 基点) を指定します |
   |             | 。 "Notebook.enable_traversal()" が呼ばれていた場合、下線が引  |
   |             | かれた文 字はショートカットとして使われます。                  |
   +-------------+----------------------------------------------------------------+


24.2.5.3. タブ識別子
--------------------

"ttk.Notebook" のいくつかのメソッドにある *tab_id* は以下の形式を取り
ます:

* 0 からタブの数の間の整数。

* 子ウィンドウの名前。

* タブを指し示す "@x,y" という形式の位置指定。

* 現在選択されているタブを指し示すリテラル文字列 "current"。

* タブ数を返すリテラル文字列 "end" ("Notebook.index()" でのみ有効)。


24.2.5.4. 仮想イベント
----------------------

このウィジェットは新しいタブが選択された後に仮想イベント
**<<NotebookTabChanged>>** を生成します。


24.2.5.5. ttk.Notebook
----------------------

class ttk.Notebook

   add(child, **kw)

      ノートブックに新しいタブを追加します。

      ウィンドウが現在ノートブックによって管理されているが隠れている場
      合、以前の位置に復元します。

      利用可能なオプションのリストについては Tab Options を参照してく
      ださい。

   forget(tab_id)

      *tab_id* で指定されたタブを削除します。関連付けられていたウィン
      ドウは切り離され、管理対象でなくなります。

   hide(tab_id)

      *tab_id* で指定されたタブを隠します。

      タブは表示されませんが、関連付いているウィンドウはノートブックに
      よって保持されていて、その設定も記憶されています。隠れたタブは
      "add()" コマンドで復元できます。

   identify(x, y)

      *x* *y* の位置にあるタブの名前を、そこにタブが無ければ空文字列を
      返します。

   index(tab_id)

      *tab_id* で指定されたタブのインデックスを、 *tab_id* が文字列の
      "end" だった場合はタブの総数を返します。

   insert(pos, child, **kw)

      指定された位置にペインを挿入します。

      *pos* は文字列の "end" か整数のインデックスか管理されている子ウ
      ィンドウの名前です。 *child* が既にノートブックの管理対象だった
      場合、指定された場所に移動させます。

      利用可能なオプションのリストについては Tab Options を参照してく
      ださい。

   select([tab_id])

      指定された *tab_id* を選択します。

      関連付いている子ウィンドウは表示され、直前に選択されていたウィン
      ドウは (もし異なれば) 表示されなくなります。 *tab_id* が指定され
      ていない場合は、現在選択されているペインのウィジェット名を返しま
      す。

   tab(tab_id, option=None, **kw)

      指定された *tab_id* のオプションを問い合わせたり、変更したりしま
      す。

      *kw* が与えられなかった場合、タブのオプション値の辞書を返します
      。 *option* が指定されていた場合、その *option* の値を返します。
      それ以外の場合は、オプションに対応する値が設定されます。

   tabs()

      ノートブックに管理されているウィンドウのリストを返します。

   enable_traversal()

      このノートブックを含む最上位にあるウィンドウでのキーボード移動を
      可能にします。

      これによりノートブックを含んだ最上位にあるウィンドウに対し、以下
      のキーバインディングが追加されます:

      * "Control-Tab": 現在選択されているタブの 1 つ次のタブを選択し
        ま す。

      * "Shift-Control-Tab": 現在選択されているタブの 1 つ前のタブを
        選 択します。

      * "Alt-K": *K* があるタブの (下線が引かれた) ショートカットキ
        ー だとして、そのタブを選択します。

      ネストしたノートブックも含め、1 つのウィンドウの最上位にある複数
      のノートブックのキーボード移動が可能になることもあります。しかし
      ノートブック上の移動は、全てのペインが同じノートブックを親として
      いるときのみ正しく動作します。


24.2.6. プログレスバー
======================

"ttk.Progressbar" ウィジェットは長く走る処理の状態を表示します。このウ
ィジェットは 2 つのモードで動作します: 決定的モードでは、全ての処理の
総量のうち完了した量を表示します。非決定的モードでは、今何か処理が行わ
れていることをユーザに示します。


24.2.6.1. オプション
--------------------

このウィジェットは以下の固有のオプションを受け付けます:

   +------------+-----------------------------------------------------------------+
   | option     | description                                                     |
   +============+=================================================================+
   | orient     | "horizontal" もしくは "vertical" のいずれかです。プログレスバー |
   |            | の方 向を指定します。                                           |
   +------------+-----------------------------------------------------------------+
   | length     | プログレスバーの長さを指定します。 (水平方向の場合は幅、垂直方  |
   |            | 向の 場合は高さです)                                            |
   +------------+-----------------------------------------------------------------+
   | mode       | "determinate" か "indeterminate" のいずれかです。               |
   +------------+-----------------------------------------------------------------+
   | maximum    | 最大値を数値で指定します。デフォルトは 100 です。               |
   +------------+-----------------------------------------------------------------+
   | value      | プログレスバーの現在値です。決定的 ("determinate") モードでは、 |
   |            | 完了 した処理の量を表します。非決定的 ("indeterminate") モード  |
   |            | では、 *maximum* を法として解釈され、値が *maximum* に達したと  |
   |            | きにプログレ スバーは 1 "サイクル" を完了したことになります。   |
   +------------+-----------------------------------------------------------------+
   | variable   | value オプションとリンクさせる変数名です。指定されている場合、  |
   |            | 変数 の値が変更されるとプログレスバーの値は自動的にその値に設定 |
   |            | されます 。                                                     |
   +------------+-----------------------------------------------------------------+
   | phase      | 読み取り専用のオプションです。このウィジェットの値が 0 より大き |
   |            | く、 かつ決定的モードでは最大値より小さいときに、ウィジェットが |
   |            | 定期的に このオプションの値を増加させます。このオプションは現在 |
   |            | の画面テーマ が追加のアニメーション効果を出すのに使います。     |
   +------------+-----------------------------------------------------------------+


24.2.6.2. ttk.Progressbar
-------------------------

class ttk.Progressbar

   start([interval])

      自動増加モードを開始します: *interval* ミリ秒ごとに
      "Progressbar.step()" を繰り返し呼び出すタイマーイベントを設定し
      ます。引数で指定しない場合は、 *interval* はデフォルトで 50 ミリ
      秒になります。

   step([amount])

      プログレスバーの値を *amount* だけ増加させます。

      引数で指定しない場合は、 *amount* はデフォルトで 1.0 になります
      。

   stop()

      自動増加モードを停止します: このプログレスバーの
      "Progressbar.start()" で開始された繰り返しのタイマーイベントを全
      てキャンセルします。


24.2.7. セパレータ
==================

"ttk.Separator" ウィジェットは水平もしくは垂直のセパレータを表示します
。

"ttk.Widget" から継承したメソッド以外にメソッドを持ちません。


24.2.7.1. オプション
--------------------

このウィジェットは以下の固有のオプションを受け付けます:

   +----------+------------------------------------------------------------------+
   | option   | description                                                      |
   +==========+==================================================================+
   | orient   | "horizontal" か "vertical" のいずれかです。セパレータの方向を指  |
   |          | 定し ます。                                                      |
   +----------+------------------------------------------------------------------+


24.2.8. サイズグリップ
======================

(グローボックスとしても知られる) "ttk.Sizegrip" ウィジェットは、押して
つまみ部分をドラッグすることで最上位のウィンドウのサイズを変更できます
。

このウィジェットは "ttk.Widget" から継承したもの以外のオプションとメソ
ッドを持ちません。


24.2.8.1. プラットフォーム固有のメモ
------------------------------------

* Mac OS X では、最上位のウィンドウにはデフォルトで組み込みのサイズ
  グ リップが含まれています。組み込みのグリップが "Sizegrip" を隠して
  しま うので、 "Sizegrip" を追加するのは無害です。


24.2.8.2. バグ
--------------

* 最上位のウィンドウの位置がスクリーンに対して右や下に指定されている
  場 合 (などなど....)、 "Sizegrip" ウィジェットはウィンドウのサイズ変
  更 をしません。

* このウィジェットは "南東" 方向のサイズ変更しかサポートしていません
  。


24.2.9. ツリービュー
====================

"ttk.Treeview" ウィジェットは階層のある要素 (アイテム) の集まりを表示
します。それぞれの要素はテキストラベル、オプションの画像、オプションの
データのリストを持っています。データはラベルの後に続くカラムに表示され
ます。

データが表示される順序はウィジェットの "displaycolumns" オプションで制
御されます。ツリーウィジェットはカラムヘッダを表示することもできます。
カラムには数字もしくはウィジェットの columns オプションにある名前でア
クセスできます。 Column Identifiers を参照してください。

それぞれの要素は一意な名前で識別されます。要素の作成時に識別子が与えら
れなかった場合、ウィジェットが要素の識別子を生成します。このウィジェッ
トには "{}" という名前の特別なルート要素があります。ルート要素自身は表
示されません; その子要素たちが階層の最上位に現れます。

それぞれの要素はタグのリストも持っていて、イベントバインディングと個別
の要素を関連付け、要素の見た目を管理するのに使えます。

ツリービューウィジェットは水平方向と垂直方向のスクロールをサポートして
いて、 Scrollable Widget Options に記述してあるオプションと
"Treeview.xview()" メソッドおよび "Treeview.yview()" メソッドが使えま
す。


24.2.9.1. オプション
--------------------

このウィジェットは以下の固有のオプションを受け付けます:

   +------------------+----------------------------------------------------------+
   | option           | description                                              |
   +==================+==========================================================+
   | columns          | カラム数とその名前を指定するカラム識別子のリストです。   |
   +------------------+----------------------------------------------------------+
   | displaycolumns   | どのデータカラムをどの順序で表示するかを指定する、 (名前 |
   |                  | もしくは整 数のインデックスの) カラム識別子のリストか、  |
   |                  | 文字列 "#all" です。                                     |
   +------------------+----------------------------------------------------------+
   | height           | 表示する行数を指定します。メモ: 表示に必要な幅はカラム幅 |
   |                  | の合計から 決定されます。                                |
   +------------------+----------------------------------------------------------+
   | padding          | ウィジェットの内部のパディングのサイズを指定します。パデ |
   |                  | ィングは最 大 4 個の長さ指定のリストです。               |
   +------------------+----------------------------------------------------------+
   | selectmode       | 組み込みのクラスバインディングが選択状態をどう管理するか |
   |                  | を指定しま す。設定する値は "extended", "browse", "none" |
   |                  | のどれか 1 つです。 "extended" に設定した場合 (デフォル  |
   |                  | ト)、複数の要素が選択できます。 "browse" に設定した場合  |
   |                  | 、同時に 1 つの要素しか選択できません。 "none" に設定し  |
   |                  | た場合、選択を変更することはできません。  このオプション |
   |                  | の値によらず、アプリケーションのコードと関連付けられ て  |
   |                  | いるタグからは好きなように選択状態を設定できます。       |
   +------------------+----------------------------------------------------------+
   | show             | ツリーのどの要素を表示するかを指定する、以下にある値を 0 |
   |                  | 個以上含む リストです。  * tree: カラム #0 にツリーのラ  |
   |                  | ベルを表示します。  * headings: ヘッダ行を表示します。   |
   |                  | デフォルトは "tree headings" 、つまり全ての要素を表示し  |
   |                  | ます。  **メモ**: show="tree" が指定されていない場合でも |
   |                  | 、カラム #0 は常に ツリーカラムを参照します。            |
   +------------------+----------------------------------------------------------+


24.2.9.2. 要素オプション
------------------------

以下の要素オプションは、ウィジェットの insert コマンドと item コマンド
で要素に対して指定できます。

   +----------+-----------------------------------------------------------------+
   | option   | description                                                     |
   +==========+=================================================================+
   | text     | アイテムに表示するテキストラベルです。                          |
   +----------+-----------------------------------------------------------------+
   | image    | ラベルの左に表示される Tk 画像です。                            |
   +----------+-----------------------------------------------------------------+
   | values   | 要素に関連付けられている値のリストです。  それぞれの要素はウィ  |
   |          | ジェットの columns オプションと同じ数の値を持た なければいけま  |
   |          | せん。 columns オプションより少ない場合、残りの値は空 として扱  |
   |          | われます。 columns オプションより多い場合、余計な値は無視さ れ  |
   |          | ます。                                                          |
   +----------+-----------------------------------------------------------------+
   | open     | 要素の子供を表示するか隠すかを指示する真偽値です。              |
   +----------+-----------------------------------------------------------------+
   | tags     | この要素に関連付いているタグのリストです。                      |
   +----------+-----------------------------------------------------------------+


24.2.9.3. タグオプション
------------------------

以下のオプションはタグに対して設定できます:

   +--------------+-------------------------------------------------------------+
   | option       | description                                                 |
   +==============+=============================================================+
   | foreground   | テキストの色を指定します。                                  |
   +--------------+-------------------------------------------------------------+
   | background   | セルや要素の背景色を指定します。                            |
   +--------------+-------------------------------------------------------------+
   | font         | テキストを描画するときに使うフォントを指定します。          |
   +--------------+-------------------------------------------------------------+
   | image        | 要素の image オプションが空だった場合に使用する画像を指定し |
   |              | ます。                                                      |
   +--------------+-------------------------------------------------------------+


24.2.9.4. カラム識別子
----------------------

カラム識別子は以下のいずれかの形式を取ります:

* columns オプションのリストにある名前。

* n 番目のデータカラムを指し示す整数 n 。

* n を整数として n 番目の表示されているカラムを指し示す #n という形
  式 の文字列。

注釈:

* 要素のオプション値は実際に格納されている順序とは違った順序で表示さ
  れ ることがあります。

* show="tree" が指定されていない場合でも、カラム #0 は常にツリーカラ
  ム を指しています。

データカラムを指す数字は、要素の values オプションのリストのインデック
スです; 表示カラムを指す数字は、値が表示されているツリーのカラム番号で
す。ツリーラベルはカラム #0 に表示されます。 displaycolumns オプション
が設定されていない場合は、 n 番目のデータカラムはカラム #n+1 に表示さ
れます。再度言っておくと、 **カラム #0 は常にツリーカラムを指します**
。


24.2.9.5. 仮想イベント
----------------------

ツリービューは以下の仮想イベントを生成します。

   +----------------------+----------------------------------------------------+
   | イベント             | description                                        |
   +======================+====================================================+
   | <<TreeviewSelect>>   | 選択状態が変更されたときに生成されます。           |
   +----------------------+----------------------------------------------------+
   | <<TreeviewOpen>>     | フォーカスが当たっている要素に open=True が設定さ  |
   |                      | れる直前に生成され ます。                          |
   +----------------------+----------------------------------------------------+
   | <<TreeviewClose>>    | フォーカスが当たっている要素に open=False が設定さ |
   |                      | れた直後に生成さ れます。                          |
   +----------------------+----------------------------------------------------+

"Treeview.focus()" メソッドと "Treeview.selection()" メソッドは変更を
受けた要素を判別するのに使えます。


24.2.9.6. ttk.Treeview
----------------------

class ttk.Treeview

   bbox(item, column=None)

      (ツリービューウィジェットのウィンドウを基準として) 指定された
      *item* のバウンディングボックス情報を (x 座標, y 座標, 幅, 高さ)
      の形式で返します。

      *column* が指定されている場合は、セルのバウンディングボックスを
      返します。 (例えば、閉じた状態の要素の子供であったり、枠外にスク
      ロールされていて) *item* が見えなくなっている場合は、空文字列が
      返されます。

   get_children([item])

      *item* の子要素のリストを返します。

      *item* が指定されていなかった場合は、ルート要素の子供が返されま
      す。

   set_children(item, *newchildren)

      *item* の子要素を *newchildren* で置き換えます。

      *item* にいる子供のうち *newchildren* にないものはツリーから切り
      離されます。 *newchildren* にあるどの要素も *item* の祖先であっ
      てはいけません。 *newchildren* を指定しなかった場合は、 *item*
      の子要素が全て切り離されることに注意してください。

   column(column, option=None, **kw)

      指定した *column* のオプションを問い合わせたり、変更したりします
      。

      *kw* が与えられなかった場合は、カラムのオプション値の辞書が返さ
      れます。 *option* が指定されていた場合は、その *option* の値が返
      されます。それ以外の場合は、オプションに値を設定します。

      設定できるオプションとその値は次の通りです:

      * id

           カラム名を返します。これは読み取り専用のオプションです。

      * anchor: 標準の Tk anchor の値

           このカラムでセルに対してテキストをどう配置するかを指定しま
           す。

      * minwidth: 幅

           カラムの最小幅をピクセル単位で表したものです。ツリービュー
           ウィジェットは、ウィジェットのサイズが変更されたりカラムを
           ユーザがドラッグして移動させたりしたときに、このオプション
           で指定した幅より狭くすることはありません。

      * stretch: True もしくは False

           ウィジェットがサイズ変更されたとき、カラムの幅をそれに合わ
           せるかどうかを指定します。

      * width: 幅

           カラムの幅をピクセル単位で表したものです。

      ツリーカラムの設定を行うには、 column = "#0" を付けてこのメソッ
      ドを呼び出してください。

   delete(*items)

      指定された *items* とその子孫たち全てを削除します。

      ルート要素は削除されません。

   detach(*items)

      指定された *items* を全てツリーから切り離します。

      その要素と子孫たちは依然として存在していて、ツリーの別の場所に再
      度挿入することができますが、隠された状態になり表示はされません。

      ルート要素は切り離されません。

   exists(item)

      指定された *item* がツリーの中にあれば "True" を返します。

   focus([item=None])

      *item* が指定されていた場合は、 *item* にフォーカスを当てます。
      そうでない場合は、現在フォーカスが当たっている要素が、どの要素に
      もフォーカスが当たっていない場合は '' が返されます。

   heading(column, option=None, **kw)

      指定された *column* の heading のオプションを問い合わせたり、変
      更したりします。

      *kw* が与えられなかった場合は、見出しのオプション値の辞書が返さ
      れます。 *option* が指定されている場合は、 *option* の値が返され
      ます。それ以外の場合は、オプションに値を設定します。

      設定できるオプションとその値は次の通りです:

      * text: テキスト

           カラムの見出しに表示するテキスト。

      * image: 画像名

           カラムの見出しの右に表示する画像を指定します。

      * anchor: anchor

           見出しのテキストをどう配置するかを指定します。標準の Tk
           anchor の値です。

      * command: コールバック

           見出しラベルがクリックされたときに実行されるコールバックで
           す。

      ツリーカラムの見出しの設定を行うには、 column = "#0" を付けてこ
      のメソッドを呼び出してください。

   identify(component, x, y)

      *x* *y* で与えられた場所にある指定された *component* の説明を返
      します。その場所に指定された *component* が無い場合は空文字列を
      返します。 (訳注: component には "region", "item", "column",
      "row", "element" が指定でき、それぞれ "cell", "heading" などの場
      所の名前、要素の識別子、 #n という形式のカラム名、その行にある要
      素の識別子、 "text", "padding" などの画面構成要素の名前を返しま
      す。)

   identify_row(y)

      y 座標が *y* の位置にある要素の識別子を返します。

   identify_column(x)

      x 座標が *x* の位置にあるセルのデータカラムの識別子を返します。

      ツリーカラムは #0 という識別子を持ちます。

   identify_region(x, y)

      以下のうち 1 つを返します:

      +-------------+----------------------------------------+
      | region      | 意味                                   |
      +=============+========================================+
      | heading     | ツリーの見出し領域                     |
      +-------------+----------------------------------------+
      | separator   | 2 つのカラム見出しの間のスペース       |
      +-------------+----------------------------------------+
      | tree        | ツリーの領域                           |
      +-------------+----------------------------------------+
      | cell        | データセル                             |
      +-------------+----------------------------------------+

      使用可能バージョン: Tk 8.6

   identify_element(x, y)

      *x* *y* の位置にある画面構成要素の名前を返します。

      使用可能バージョン: Tk 8.6

   index(item)

      親要素の子要素リストの中での *item* のインデックスを返します。

   insert(parent, index, iid=None, **kw)

      新しい要素を作り、その要素の識別子を返します。

      *parent* は親となる要素の識別子で、空文字列にすると新しい要素を
      最上位に作成します。 *index* は整数もしくは "end" という値で、そ
      れによって親要素の子要素リストのどこに新しい要素を挿入するかを指
      定します。 *index* が 0 以下だった場合は、新しい要素は先頭に挿入
      されます; *index* が現在の子要素の数以上だった場合は末尾に挿入さ
      れます。 *iid* が指定された場合は、要素の識別子として使われます;
      *iid* はまだツリーに存在していないものに限ります。それ以外の場合
      は、一意な識別子が生成されます。

      使用できるオプションのリストについては Item Options を参照してく
      ださい。

   item(item[, option[, **kw]])

      指定された *item* のオプションを問い合わせたり、変更したりします
      。

      オプションが与えられなかった場合は、要素のオプションと値が辞書の
      形で返されます。 *option* が指定された場合は、そのオプションの値
      が返されます。それ以外の場合は、 *kw* で与えられたようにオプショ
      ンに値が設定されます。

   move(item, parent, index)

      *item* を *parent* の子要素リストの *index* の位置に移動します。

      要素を自身の子孫の下に移動させるのは許されていません。 *index*
      が 0 以下の場合、 *item* は先頭に移動されます; 子要素の数以上だ
      った場合、末尾に移動されます。 *item* が切り離された状態の場合は
      、再度取り付けられます。

   next(item)

      *item* の 1 つ下の兄弟の識別子を、 *item* が親にとって一番下の子
      供だった場合 '' を返します。

   parent(item)

      *item* の親の識別子を、 *item* が階層の最上位にいた場合 '' を返
      します。

   prev(item)

      *item* の 1 つ上の兄弟の識別子を、 *item* が親にとって一番上の子
      供だった場合 '' を返します。

   reattach(item, parent, index)

      "Treeview.move()" のエイリアスです。

   see(item)

      *item* を見える状態にします。

      *item* の全ての子孫の open オプションを "True" にし、必要であれ
      ば *item* がツリーの見える範囲に来るようにウィジェットをスクロー
      ルさせます。

   selection([selop=None[, items=None]])

      *selop* が指定されなかった場合は、選択されている要素を返します。
      そうでなければ、以下の選択メソッドに従って動作します。 (訳注:
      *selop* には "set", "add", "remove", "toggle" のうち 1 つが指定
      できます。 *items* にはそれぞれのメソッドの引数を指定します。)

   selection_set(items)

      新しく選択状態の要素が *items* になります。

   selection_add(items)

      選択状態の要素として *items* を追加します。

   selection_remove(items)

      選択状態の要素から *items* を取り除きます。

   selection_toggle(items)

      *items* のそれぞれの要素の選択状態を入れ替えます。

   set(item, column=None, value=None)

      1 引数で呼び出された場合、指定された *item* のカラムと値のペアか
      らなる辞書を返します。 2 引数で呼び出された場合、指定された
      *column* の現在の値を返します。 3 引数で呼び出された場合、与えら
      れた *item* の *column* を指定された値 *value* に設定します。

   tag_bind(tagname, sequence=None, callback=None)

      与えられたイベント *sequence* 用のコールバックをタグ *tagname*
      にバインドします。イベントが要素に渡ってきたときに、要素の tags
      オプションのそれぞれのコールバックが呼び出されます。

   tag_configure(tagname, option=None, **kw)

      指定された *tagname* のオプションを問い合わせたり、変更したりし
      ます。

      *kw* が与えられなかった場合、 *tagname* のオプション設定を辞書の
      形で返します。 *option* が指定された場合、指定された *tagname*
      の *option* の値を返します。それ以外の場合、与えられた *tagname*
      のオプションに値を設定します。

   tag_has(tagname[, item])

      *item* が指定されていた場合、指定された *item* が与えられた
      *tagname* を持っているかどうかに従って 1 または 0 が返されます。
      そうでない場合、指定されたタグを持つ全ての要素のリストを返します
      。

      使用可能バージョン: Tk 8.6

   xview(*args)

      ツリービューの水平方向の位置を問い合わせたり、変更したりします。

   yview(*args)

      ツリービューの垂直方向の位置を問い合わせたり、変更したりします。


24.2.10. Ttk スタイル
=====================

"ttk" のそれぞれのウィジェットにはスタイルが関連付けられていて、それと
動的もしくはデフォルトで設定される要素のオプションによってウィジェット
を構成する要素とその配置を指定します。デフォルトではスタイル名はウィジ
ェットのクラス名と同じですが、ウィジェットの style オプションで上書き
することができます。ウィジェットのクラス名が分からない場合は、
"Misc.winfo_class()" (somewidget.winfo_class()) メソッドを使ってくださ
い。

参考:

  Tcl'2004 conference のプレゼンテーション
     この文書ではテーマエンジンがどう動くかを説明しています

class ttk.Style

   このクラスはスタイルデータベースを操作するために使われます。

   configure(style, query_opt=None, **kw)

      *style* の指定されたオプションのデフォルト値を問い合わせたり、設
      定したりします。

      *kw* のそれぞれのキーはオプション名で値はそのオプションの値の文
      字列です。

      例えば、全てのデフォルトのボタンをパディングのある平らな見た目に
      し背景の色を変更するには以下のようにします

         import ttk
         import Tkinter

         root = Tkinter.Tk()

         ttk.Style().configure("TButton", padding=6, relief="flat",
            background="#ccc")

         btn = ttk.Button(text="Sample")
         btn.pack()

         root.mainloop()

   map(style, query_opt=None, **kw)

      *style* の指定されたオプションの動的な値を問い合わせたり、設定し
      たりします。

      *kw* のそれぞれのキーはオプション名で、値はタプルやリストや何か
      他の好きなものでグループ化された状態仕様 (statespec) を要素とす
      るリストやタプルです。状態仕様は 1 つもしくは複数の状態と値の組
      み合わせです。

      以下に例を示します:

         import Tkinter
         import ttk

         root = Tkinter.Tk()

         style = ttk.Style()
         style.map("C.TButton",
             foreground=[('pressed', 'red'), ('active', 'blue')],
             background=[('pressed', '!disabled', 'black'), ('active', 'white')]
             )

         colored_btn = ttk.Button(text="Test", style="C.TButton").pack()

         root.mainloop()

      あるオプションに対する状態と値の組 (states, value) の並び順はス
      タイルに影響を与えることに注意してください。例えば、 foreground
      オプションの順序を "[('active', 'blue'), ('pressed', 'red')]" に
      変更した場合、ウィジェットがアクティブもしくは押された状態のとき
      前面が青くなります。

   lookup(style, option, state=None, default=None)

      *style* の指定された *option* の値を返します。

      *state* を指定する場合は、1 つ以上の状態名の並びである必要があり
      ます。 *default* 引数が指定されていた場合は、オプション指定が見
      付からなかったときに代わりに返される値として使われます。

      デフォルトでボタンがどのフォントを使うかを調べるには、以下のよう
      に実行します

         import ttk

         print ttk.Style().lookup("TButton", "font")

   layout(style, layoutspec=None)

      与えられた *style* でのウィジェットのレイアウトを定義します。
      *layoutspec* が省略されていた場合は、与えられたスタイルのレイア
      ウト仕様を返します。

      *layoutspec* を指定する場合は、リストもしくは (文字列を除いた)
      何か他のシーケンス型である必要があります。それぞれの要素はタプル
      で、レイアウト名を 1 番目の要素とし、2 番目の要素は Layouts で説
      明されているフォーマットである必要があります。

      フォーマットを理解するために以下の例を見てください (何かを使い易
      くするための例ではありません):

         import ttk
         import Tkinter

         root = Tkinter.Tk()

         style = ttk.Style()
         style.layout("TMenubutton", [
            ("Menubutton.background", None),
            ("Menubutton.button", {"children":
                [("Menubutton.focus", {"children":
                    [("Menubutton.padding", {"children":
                        [("Menubutton.label", {"side": "left", "expand": 1})]
                    })]
                })]
            }),
         ])

         mbtn = ttk.Menubutton(text='Text')
         mbtn.pack()
         root.mainloop()

   element_create(elementname, etype, *args, **kw)

      与えられた *etype* ("image", "from", "vsapi" のいずれか) の現在
      のテーマに新しい要素を作成します。最後の "vsapi" は Windows XP
      と Vista の Tk 8.6a のみで使用可能でここでは説明しません。

      "image" が使われた場合、 *args* はデフォルトの画像名の後ろに状態
      仕様と値のペア (これが画像仕様です) を並べたものである必要があり
      ます。 *kw* には以下のオプションが指定できます:

         * border=padding

              padding は 4 個以下の整数のリストで、それぞれ左、上、右
              、下の縁の幅を指定します。

         * height=height

              要素の最小の高さを指定します。0 より小さい場合は、画像の
              高さをデフォルトとして使用します。

         * padding=padding

              要素の内部のパディングを指定します。指定されない場合は、
              border の値がデフォルトとして使われます。

         * sticky=spec

              1 つ外側の枠に対し画像をどう配置するかを指定します。
              spec は "n", "s", "w", "e" の文字を 0 個以上含みます。

         * width=width

              要素の最小の幅を指定します。0 より小さい場合は、画像の幅
              をデフォルトとして使用します。

      *etype* の値として "from" が使われた場合は、 "element_create()"
      が現在の要素を複製します。 *args* は要素の複製元のテーマの名前と
      、オプションで複製する要素を含んでいる必要があります。複製元の要
      素が指定されていなかった場合、空要素が使用され、 *kw* は破棄され
      ます。

   element_names()

      現在のテーマに定義されている要素のリストを返します。

   element_options(elementname)

      *elementname* のオプションのリストを返します。

   theme_create(themename, parent=None, settings=None)

      新しいテーマを作成します。

      *themename* が既に存在していた場合はエラーになります。 *parent*
      が指定されていた場合は、新しいテーマは親テーマからスタイルや要素
      やレイアウトを継承します。 *settings* が指定された場合は、
      "theme_settings()" で使われるのと同じ形式である必要があります。

   theme_settings(themename, settings)

      一時的に現在のテーマを *themename* に設定し、指定された
      *settings* を適用した後、元のテーマを復元します。

      *settings* のそれぞれのキーはスタイル名で値はさらに 'configure',
      'map', 'layout', 'element create' をキーとして持ち、その値はそれ
      ぞれ "Style.configure()", "Style.map()", "Style.layout()",
      "Style.element_create()" メソッドで指定するのと同じ形式である必
      要があります。

      例として、コンボボックスの default テーマを少し変更してみましょ
      う

         import ttk
         import Tkinter

         root = Tkinter.Tk()

         style = ttk.Style()
         style.theme_settings("default", {
            "TCombobox": {
                "configure": {"padding": 5},
                "map": {
                    "background": [("active", "green2"),
                                   ("!disabled", "green4")],
                    "fieldbackground": [("!disabled", "green3")],
                    "foreground": [("focus", "OliveDrab1"),
                                   ("!disabled", "OliveDrab2")]
                }
            }
         })

         combo = ttk.Combobox().pack()

         root.mainloop()

   theme_names()

      全ての既存のテーマのリストを返します。

   theme_use([themename])

      *themename* が与えられなかった場合は、現在使用中のテーマ名を返し
      ます。そうでない場合は、現在のテーマを *themename* に設定し、全
      てのウィジェットを再描画し、 <<ThemeChanged>> イベントを発生させ
      ます。


24.2.10.1. レイアウト
---------------------

レイアウトはオプションを取らない場合はただの "None" にできますし、そう
でない場合は要素をどう配置するかを指定するオプションの辞書になります。
レイアウト機構は単純化したジオメトリマネージャを使っています: 最初に空
間が与えられ、それぞれの要素に分割された空間が配分されます。 設定でき
るオプションと値は次の通りです:

   * side: 辺の名前

        要素を空間のどちら側に配置するかを指定します; top, right,
        bottom, left のどれか 1 つです。省略された場合は、要素は空間全
        体を占めます。

   * sticky: n, s, w, e から 0 個以上

        配分された空間の内部に要素をどう配置するかを指定します。

   * unit: 0 か 1

        1 に設定されると、 "Widget.identify()" などには要素とその子で
        単一の要素として扱われます。これは、グリップのついたスクロール
        バーサムのようなものに使われます。

   * children: [内部レイアウト... ]

        要素の内部に配置する要素のリストを指定します。リストのそれぞれ
        の要素はタプル (もしくは他のシーケンス型) で、それの 1 番目の
        要素はレイアウト名でそれ以降は Layout です。
