## 5 Tk と Tkinter はどのように関わっているのか

注意: 以下の構図は図版をもとに書き下ろしたものです。このドキュメントの 今後のバージョンでは、図版をもっと直接的に利用する予定です。

上から下に、呼び出しの階層構造を説明してゆきます:

あなたのアプリケーション (Python)
  まず、 Python アプリケーションが`Tkinter`を呼び出します。

Tkinter ( Python モジュール)
  上記の呼び出し (例えば、ボタンウィジェットの作成) は、 Tkinter モジュール内で実現されており、Python で書かれています。 この Python で書かれた関数は、コマンドと引数を解析して変換し、あたかも コマンドが Python スクリプトではなく Tk スクリプトから来たように みせかけます。

tkinter (C)
  上記のコマンドと引数は tkinter (小文字です。注意してください) 拡張モジュール内の C 関数に渡されます 。

Tk Widgets (C and Tcl)
  上記の C 関数は、Tk ライブラリを構成する C 関数の入った別の C モジュールへの呼び出しを行えるようになっています。 Tk は C と Tcl を少し使って実装されています。 Tk ウィジェットの Tcl 部分は、ウィジェットのデフォルト動作をバインド するために使われ、Python で書かれた`Tkinter` モジュールが import される時点で一度だけ実行されます。(ユーザがこの過程を目にする ことはありません。

Tk (C)
  Tkウィジェットの Tk 部分で実装されている最終的な対応付け操作によって...

Xlib (C)
  Xlib ライブラリがスクリーン上にグラフィックスを描きます。