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

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


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

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

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.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 パラメータは、要求されているファイル選択ダイアログ・ウィジェットの型を指定するために文字列として渡されます。指定可能なオプションは tixFileSelectDialog あるいは tixExFileSelectDialog です。

tixCommand.tix_getimage(self, name)

ビットマップディレクトリの一つの中の name.xpmname.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 アプリケーションのスキームとフォントセットをそれぞれ newSchemenewFontSet に再設定します。この設定は、この呼び出し後に作成されたウィジェットだけに影響します。そのため、Tix アプリケーションのどのウィジェットを作成する前にも resetoptions メソッドを呼び出すのが良い方法です。

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

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