25.3. "tkinter.tix" --- Tkの拡張ウィジェット
********************************************

**ソースコード:** Lib/tkinter/tix.py

バージョン 3.6 で非推奨: この Tk 拡張は保守されておらず、新しいコード
では使うべきではありません。 その代わりに "tkinter.ttk" を使ってくださ
い。

======================================================================

"tkinter.tix" (Tk Interface Extension) モジュールは豊富な追加ウィジェ
ットを提供します。標準 Tk ライブラリには多くの有用なウィジェットがあり
ますが、決して完全ではありません。 "tkinter.tix" ライブラリは、"HList"
、 "ComboBox" 、 "Control" (別名SpinBox) および各種のスクロール可能な
ウィジェットなど、標準 Tk にはないが、一般的に必要とされるウィジェット
の大部分を提供します。 "tkinter.tix" には、class:*NoteBook* 、
"FileEntry" 、 "PanedWindow" など、一般的に幅広い用途に役に立つたくさ
んのウィジェットも含まれています。それらは40以上あります。

これら多くの新しいウィジェットと使うと、より便利でより直感的なユーザイ
ンタフェースを作成し、新しい相互作用テクニックをアプリケーションに導入
することができます。アプリケーションとユーザに特有の要求に合うように、
最も適切なアプリケーションウィジェットを選んでアプリケーションを設計で
きます。

参考:

  Tix Homepage
     "Tix" のホームページ。ここには追加ドキュメントとダウンロードへの
     リンクがあります。

  Tix Man Pages
     manページと参考資料のオンライン版。

  Tix Programming Guide
     プログラマ用参考資料のオンライン版。

  Tix Development Applications
     Tix と Tkinter プログラムの開発のための Tix アプリケーション。
     Tideアプリケーションは Tk または Tkinter に基づいて動作します。ま
     た、リモートで Tix/Tk/Tkinter アプリケーションを変更やデバッグす
     るためのインスペクタ **TixInspect** が含まれます。


25.3.1. Tixを使う
=================

class tkinter.tix.Tk(screenName=None, baseName=None, className='Tix')

   主にアプリケーションのメインウィンドウを表すTixのトップレベルウィジ
   ェット。Tcl インタープリタが関連付けられます。

   "tkinter.tix" モジュールのクラスは "tkinter" モジュールのクラスをサ
   ブクラス化します。前者は後者をインポートするので、モジュールを一つ
   インポートするだけで "tkinter.tix" を Tkinter と一緒に使うことがで
   きます。一般的に、 "tkinter.tix" をインポートし、トップレベルでの
   "tkinter.Tk" への呼び出しは "tix.Tk" に置き換えるだけで済みます。次
   に例を示します:

      from tkinter import tix
      from tkinter.constants import *
      root = tix.Tk()

"tkinter.tix" を使うためには、通常 Tk ウィジェットのインストールと平行
して、Tix ウィジェットをインストールしなければなりません。インストール
をテストするために、次のことを試してください:

   from tkinter import tix
   root = tix.Tk()
   root.tk.eval('package require Tix')

これが失敗した場合は、 Tk のインストールに問題があり、先に進む前に解決
しなければなりません。インストールされた Tix ライブラリを指定するため
には環境変数 "TIX_LIBRARY" を使ってください。 Tk 動的オブジェクトライ
ブラリ ("tk8183.dll" または "libtk8183.so") を含むディレクトリと同じデ
ィレクトリに、動的オブジェクトライブラリ ("tix8183.dll" または
"libtix8183.so") があるかどうかを確かめてください。動的オブジェクトラ
イブラリのあるディレクトリには、 "pkgIndex.tcl" (大文字、小文字を区別
します) という名前のファイルも含まれているべきで、それには次の一行が含
まれます:

   package ifneeded Tix 8.1 [list load "[file join $dir tix8183.dll]" Tix]


25.3.2. Tixウィジェット
=======================

Tix は40個以上のウィジェットクラスを "tkinter" のレパートリーに導入し
ます。


25.3.2.1. 基本ウィジェット
--------------------------

class tkinter.tix.Balloon

   ヘルプを提示するためにウィジェット上にポップアップする Balloon。ユ
   ーザがカーソルをBalloonウィジェットが束縛されているウィジェット内部
   へ移動させたとき、説明のメッセージが付いた小さなポップアップウィン
   ドウがスクリーン上に表示されます。

class tkinter.tix.ButtonBox

   ButtonBox ウィジェットは、"Ok Cancel" のためだけに普通は使われるよ
   うなボタンボックスを作成します。

class tkinter.tix.ComboBox

   ComboBox ウィジェットはMS Windowsのコンボボックスコントロールに似て
   います。ユーザはエントリ・サブウィジェットでタイプするか、リストボ
   ックス・サブウィジェットから選択するかのどちらかで選択肢を選びます
   。

class tkinter.tix.Control

   Control ウィジェットは "SpinBox" ウィジェットとしても知られています
   。ユーザは二つの矢印ボタンを押すか、またはエントリに直接値を入力し
   て値を調整します。新しい値をユーザが定義した上限と下限に対してチェ
   ックします。

class tkinter.tix.LabelEntry

   LabelEntry ウィジェットはエントリウィジェットとラベルを一つのメガウ
   ィジェットにまとめたものです。"記入形式"型のインタフェースの作成を
   簡単に行うために使うことができます。

class tkinter.tix.LabelFrame

   LabelFrame ウィジェットはフレームウィジェットとラベルを一つのメガウ
   ィジェットにまとめたものです。LabelFrameウィジェット内部にウィジェ
   ットを作成するためには、 "frame" サブウィジェットに対して新しいウィ
   ジェットを作成し、それらを "frame" サブウィジェット内部で取り扱いま
   す。

class tkinter.tix.Meter

   Meter ウィジェットは実行に時間のかかるバックグラウンド・ジョブの進
   み具合を表示するために使用できます。

class tkinter.tix.OptionMenu

   OptionMenu はオプションのメニューボタンを作成します。

class tkinter.tix.PopupMenu

   PopupMenu ウィジェットは "tk_popup" コマンドの代替品として使用でき
   ます。 "Tix" "PopupMenu" ウィジェットの利点は、操作に必要なアプリケ
   ーション・コードが少ないことです。

class tkinter.tix.Select

   Select ウィジェットはボタン・サブウィジェットのコンテナです。ユーザ
   に対する選択オプションのラジオボックスまたはチェックボックス形式を
   提供するために利用することができます。

class tkinter.tix.StdButtonBox

   StdButtonBox ウィジェットは、Motif に似たダイアログボックスのための
   標準的なボタンのグループです。


25.3.2.2. ファイルセレクタ
--------------------------

class tkinter.tix.DirList

   DirList ウィジェットは、ディレクトリのリストビュー (上の階層のディ
   レクトリとサブディレクトリ) を表示します。ユーザはリスト内に表示さ
   れたディレクトリの一つを選択したり、他のディレクトリへ変更したりで
   きます。

class tkinter.tix.DirTree

   DirTree ウィジェットはディレクトリのツリービュー (上の階層のディレ
   クトリとそのサブディレクトリ) を表示します。ユーザはリスト内に表示
   されたディレクトリの一つを選択したり、他のディレクトリへ変更したり
   できます。

class tkinter.tix.DirSelectDialog

   DirSelectDialog ウィジェットは、ダイアログウィンドウにファイルシス
   テム内のディレクトリを提示します。ユーザはこのダイアログウィンドウ
   を使用して、ファイルシステム内を移動して目的のディレクトリを選択す
   ることができます。

class tkinter.tix.DirSelectBox

   "DirSelectBox" は標準 Motif(TM) ディレクトリ選択ボックスに似ていま
   す。ユーザがディレクトリを選択するために一般的に使われます。
   DirSelectBox は主に最近 ComboBox ウィジェットに選択されたディレクト
   リを保存し、すばやく再選択できるようにします。

class tkinter.tix.ExFileSelectBox

   ExFileSelectBox ウィジェットは、たいてい tixExFileSelectDialog ウィ
   ジェット内に組み込まれます。ユーザがファイルを選択するのに便利なメ
   ソッドを提供します。 "ExFileSelectBox" ウィジェットのスタイルは、MS
   Windows 3.1 の標準ファイルダイアログにとてもよく似ています。

class tkinter.tix.FileSelectBox

   FileSelectBox は標準的な Motif(TM) ファイル選択ボックスに似ています
   。通常、ユーザがファイルを選択するために使われます。FileSelectBox
   は、直近に "ComboBox" ウィジェットに選択されたファイルを保存し、素
   早く再選択できるようにします。

class tkinter.tix.FileEntry

   FileEntry ウィジェットは、ファイル名を入力するために使うことができ
   ます。ユーザはファイル名を手入力できます。その代わりに、エントリの
   横に並んでいるボタンウィジェットを押すと表示されるファイル選択ダイ
   アログを使用することもできます。


25.3.2.3. 階層的リストボックス
------------------------------

class tkinter.tix.HList

   HList ウィジェットは階層構造をもつどんなデータ(例えば、ファイルシス
   テムディレクトリツリー)でも表示するために使用できます。リストエント
   リは字下げされ、階層のそれぞれの場所に応じて分岐線で接続されます。

class tkinter.tix.CheckList

   CheckList ウィジェットは、ユーザが選ぶ項目のリストを表示します。
   CheckList は Tk のチェックリストやラジオボタンより多くの項目を扱う
   ことができることを除いて、チェックボタンあるいはラジオボタンウィジ
   ェットと同じように動作します。

class tkinter.tix.Tree

   Tree ウィジェットは階層的なデータをツリー形式で表示するために使うこ
   とができます。ユーザはツリーの一部を開いたり閉じたりすることによっ
   て、ツリーの見えを調整できます。


25.3.2.4. 表的リストボックス
----------------------------

class tkinter.tix.TList

   TList ウィジェットは、表形式でデータを表示するために使うことができ
   ます。 "TList" ウィジェットのリスト・エントリは、Tkのリストボックス
   ・ウィジェットのエントリに似ています。主な差は、(1) "TList" ウィジ
   ェットはリスト・エントリを二次元形式で表示でき、(2) リスト・エント
   リに対して複数の色やフォントだけでなく画像も使うことができるという
   ことです。


25.3.2.5. 管理ウィジェット
--------------------------

class tkinter.tix.PanedWindow

   PanedWindow ウィジェットは、ユーザがいくつかのペインのサイズを対話
   的に操作できるようにします。ペインは垂直または水平のどちらかに配置
   されます。ユーザは二つのペインの間でリサイズ・ハンドルをドラッグし
   てペインの大きさを変更します。

class tkinter.tix.ListNoteBook

   ListNoteBook ウィジェットは、 "TixNoteBook" ウィジェットにとてもよ
   く似ています。ノートのメタファを使って限られた空間をに多くのウィン
   ドウを表示するために使われます。ノートはたくさんのページ(ウィンドウ
   )に分けられています。ある時には、これらのページの一つしか表示できま
   せん。ユーザは "hlist" サブウィジェットの中の望みのページの名前を選
   択することによって、これらのページを切り替えることができます。

class tkinter.tix.NoteBook

   NoteBook ウィジェットは、ノートのメタファを多くのウィンドウを表示す
   ることができます。ノートはたくさんのページに分けられています。ある
   時には、これらのページの一つしか表示できません。ユーザは NoteBook
   ウィジェットの一番上にある目に見える"タブ"を選択することで、これら
   のページを切り替えることができます。


25.3.2.6. 画像タイプ
--------------------

"tkinter.tix" モジュールは次のものを追加します:

* 全ての "tkinter.tix" と "tkinter" ウィジェットに対して XPM ファイル
  からカラー画像を作成する pixmap 機能。

* Compound 画像タイプは複数の水平方向の線から構成される画像を作成する
  ために使うことができます。それぞれの線は左から右に並べられた一連のア
  イテム(テキスト、ビットマップ、画像あるいは空白)から作られます。例え
  ば、Tk の"Button" ウィジェットの中にビットマップとテキスト文字列を同
  時に表示するためにcompound画像は使うことができます。


25.3.2.7. その他のウィジェット
------------------------------

class tkinter.tix.InputOnly

   InputOnly ウィジェットは、ユーザから入力を受け付けます。それは、
   "bind" コマンドを使って行われます(Unixのみ)。


25.3.2.8. ジオメトリマネジャを作る
----------------------------------

加えて、 "tkinter.tix" は次のものを提供することで "tkinter" を補強しま
す:

class tkinter.tix.Form

   すべての Tk ウィジェットに対する接続ルールに基づいた Form ジオメト
   リマネジャ。


25.3.3. Tixコマンド
===================

class tkinter.tix.tixCommand

   tixコマンド は "Tix" の内部状態と "Tix" アプリケーション・コンテキ
   ストのいろいろな要素へのアクセスを提供します。これらのメソッドによ
   って操作される情報の大部分は、特定のウィンドウというよりむしろアプ
   リケーション全体かスクリーンあるいはディスプレイに関するものです。

   現在の設定を見るための一般的な方法は:

      from tkinter import tix
      root = tix.Tk()
      print(root.tix_configure())

tixCommand.tix_configure(cnf=None, **kw)

   Tix アプリケーション・コンテキストの設定オプションを問い合わせたり
   、変更したりします。オプションが指定されなければ、利用可能なオプシ
   ョンすべてのディクショナリを返します。オプションが値なしで指定され
   た場合は、メソッドは指定されたオプションを説明するリストを返します(
   このリストはオプションが指定されていない場合に返される値に含まれて
   いる、指定されたオプションに対応するサブリストと同一です)。一つ以上
   のオプション-値のペアが指定された場合は、メソッドは与えられたオプシ
   ョンが与えられた値を持つように変更します。この場合は、メソッドは空
   文字列を返します。オプションは設定オプションのどれでも構いません。

tixCommand.tix_cget(option)

   *option* によって与えられた設定オプションの現在の値を返します。オプ
   ションは設定オプションのどれでも構いません。

tixCommand.tix_getbitmap(name)

   ビットマップディレクトリの一つの中の "name.xpm" または "name" と言
   う名前のビットマップファイルの場所を見つけ出します
   ("tix_addbitmapdir()" メソッドを参照してください)。
   "tix_getbitmap()" を使うことで、アプリケーションにビットマップファ
   イルのパス名をハードコーディングすることを避けることができます。成
   功すれば、文字 "@" を先頭に付けたビットマップファイルの完全なパス名
   を返します。戻り値をTkとTixウィジェットの "bitmap" オプションを設定
   するために使うことができます。

tixCommand.tix_addbitmapdir(directory)

   Tix は "tix_getimage()" と "tix_getbitmap()" メソッドが画像ファイル
   を検索する検索先ディレクトリのリストを保持しています。標準ビットマ
   ップディレクトリは "$TIX_LIBRARY/bitmaps" です。
   "tix_addbitmapdir()" メソッドは *directory* をこのリストに追加しま
   す。そのメソッドを使うことによって、"tix_getimage()" または
   "tix_getbitmap()" メソッドを使ってアプリケーションの画像ファイルも
   見つけることができます。

tixCommand.tix_filedialog([dlgclass])

   このアプリケーションからの異なる呼び出しの間で共有される可能性があ
   るファイル選択ダイアログを返します。最初に呼ばれた時に、このメソッ
   ドはファイル選択ダイアログ・ウィジェットを作成します。このダイアロ
   グはその後のすべての "tix_filedialog()" への呼び出しで返されます。
   オプションの dlgclass パラメータは、要求されているファイル選択ダイ
   アログ・ウィジェットの型を指定するために文字列として渡されます。指
   定可能なオプションは "tix" 、 "FileSelectDialog" あるいは
   "tixExFileSelectDialog" です。

tixCommand.tix_getimage(self, name)

   ビットマップディレクトリの一つの中の "name.xpm" 、 "name.xbm" また
   は "name.ppm" という名前の画像ファイルの場所を見つけ出します(上の
   "tix_addbitmapdir()" メソッドを参照してください)。同じ名前(だが異な
   る拡張子)のファイルが一つ以上ある場合は、画像のタイプがXディスプレ
   イの深さに応じて選択されます。xbm画像はモノクロディスプレイの場合に
   選択され、カラー画像はカラーディスプレイの場合に選択されます。
   "tix_getimage()" を使うことによって、アプリケーションに画像ファイル
   のパス名をハードコーディングすることを避けられます。成功すれば、こ
   のメソッドは新たに作成した画像の名前を返し、Tk と Tix ウィジェット
   の "image" オプションを設定するためにそれを使うことができます。

tixCommand.tix_option_get(name)

   Tixのスキーム・メカニズムによって保持されているオプションを得ます。

tixCommand.tix_resetoptions(newScheme, newFontSet[, newScmPrio])

   Tix アプリケーションのスキームとフォントセットをそれぞれ
   *newScheme* と *newFontSet* に再設定します。この設定は、この呼び出
   し後に作成されたウィジェットだけに影響します。そのため、Tix アプリ
   ケーションのどのウィジェットを作成する前にも resetoptions メソッド
   を呼び出すのが良い方法です。

   オプション・パラメータ *newScmPrio* を、Tix スキームによって設定さ
   れる Tk オプションの優先度レベルを再設定するために与えることができ
   ます。

   Tk が X オプションデータベースを扱う方法のため、Tix がインポートさ
   れ初期化された後に、カラースキームとフォントセットを "tix_config()"
   メソッドを使って再設定することはできません。したがって、
   "tix_resetoptions()" メソッドを代わりに使わなければならないのです。
