24.3. "Tix" --- Tkの拡張ウィジェット
************************************

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

これら全ての新しいウィジェットと使うと、より便利でより直感的なユーザイ
ンタフェース作成し、あなたは新しい相互作用テクニックをアプリケーション
に導入することができます。アプリケーションとユーザに特有の要求に合うよ
うに、大部分のアプリケーションウィジェットを選ぶことによって、アプリケ
ーションを設計できます。

注釈: "Tix" モジュールは、Python 3 では "tkinter.tix" にリネームされ
  ました 。 *2to3* ツールが自動的にソースコードの import を修正します
  。

参考:

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

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

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

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


24.3.1. Tixを使う
=================

class Tix.Tix(screenName[, baseName[, className]])

   たいていはアプリケーションのメインウィンドウを表すTixのトップレベル
   ウィジェット。それには Tcl インタープリタが付随します。

   "Tix" モジュールのクラスは "Tkinter" モジュールのクラスをサブクラス
   化します。前者は後者をインポートします。だから、Tkinter と一緒に
   "Tix" を使うためにやらなければならないのは、モジュールを一つインポ
   ートすることだけです。一般的に、 "Tix" をインポートし、トップレベル
   での "Tkinter.Tk" の呼び出しを "Tix.Tk" に置き換えるだけでよいので
   す:

      import Tix
      from Tkconstants import *
      root = Tix.Tk()

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

   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]


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

Tix は40個以上のウィジェットクラスを "Tkinter" のレパートリーに導入し
ます。標準配布の "Demo/tix" ディレクトリには、 "Tix" ウィジェットのデ
モがあります。


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

class Tix.Balloon

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

class Tix.ButtonBox

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

class Tix.ComboBox

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

class Tix.Control

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

class Tix.LabelEntry

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

class Tix.LabelFrame

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

class Tix.Meter

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

class Tix.OptionMenu

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

class Tix.PopupMenu

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

class Tix.Select

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

class Tix.StdButtonBox

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


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

class Tix.DirList

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

class Tix.DirTree

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

class Tix.DirSelectDialog

   DirSelectDialog ウィジェットは、ダイアログウィンドウにファイルシス
   テム内のディレクトリを提示します。望みのディレクトリを選択するため
   に、ユーザはファイルシステムを介して操作するこのダイアログウィンド
   ウを利用できます。

class Tix.DirSelectBox

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

class Tix.ExFileSelectBox

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

class Tix.FileSelectBox

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

class Tix.FileEntry

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


24.3.2.3. ハイアラキカルリストボックス
--------------------------------------

class Tix.HList

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

class Tix.CheckList

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

class Tix.Tree

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


24.3.2.4. タビュラーリストボックス
----------------------------------

class Tix.TList

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


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

class Tix.PanedWindow

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

class Tix.ListNoteBook

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

class Tix.NoteBook

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


24.3.2.6. 画像タイプ
--------------------

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

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

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


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

class Tix.InputOnly

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


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

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

class Tix.Form

   Tkウィジェットに対する接続ルールに基づいたジオメトリマネジャを 作成
   (Form)します。


24.3.3. Tixコマンド
===================

class Tix.tixCommand

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

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

      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()" メソッドを使わなければならないのです。
