## 16.1.3 Tcl/Tkに(非常に)さっと目を通す

クラス階層は複雑に見えますが、実際の実務ではアプリケーションプログラマはほとんど常に階層のもっとも底辺にあるクラスを参照します。

注釈:

- これらのクラスは一つの名前空間に関数をまとめる目的で提供されます。それらは独立してインスタンス化されることを意図しています。

- `Tk`クラスはアプリケーション内で一度だけインスタンス化されるように意図されています。アプリケーションプログラマが明示的にインスタンス化する必要はなく、他のクラスがインスタンス化されたときにすぐシステムが作成します。

- `Widget`クラスはインスタンス化されることを意図しておらず、``本物の''ウィジェットを作るためにサブクラス化することだけを意図しています(C++では、これは`抽象クラス'と呼ばれています)。

このリファレンス資料を使うために、Tkの短い進行を読む方法とTkコマンドのいろいろな部分を識別する方法を知る必要があるということはままあるでしょう。 (下に説明してあるものと`Tkinter`における同等なものについては、節 16.1.4を参照してください。)

TkスクリプトはTclプログラムです。すべてのTclプログラムのように、Tkスクリプトは空白で区切られたトークンを並べたものです。Tkウィジェットはウィジェットのクラス、その設定を行うオプションと、それに役立つことをさせるアクションです。

Tkにおけるウィジェットを作るには、コマンドは常に次のような形式です:

                    classCommand newPathname options

classCommand
  どの種類のウィジェットを作るかを表します(ボタン、ラベル、メニュー、...)

newPathname
  このウィジェットの新しい名前です。Tkのすべての名前はただ一つしか存在することが許されません。これを必ず実行するのを助けるために、ちょうどファイルシステム内のファイルのように、Tkのウィジェットにはパス名のある名前が付けられます。トップレベルウィジェットルートは`.` (ピリオド)と呼ばれていて、子はさらにピリオドで区切られています。例として、`.myApp.controlPanel.okButton`はウィジェットの名前です。

options
  ウィジェットの見た目や場合によっては振る舞いを設定します。オプションはフラグと値のリスト形式で渡されます。unixシェルコマンドのフラグのように、フラグは`-'の後に続きます。また、値は一語以上ある場合には引用符内に置かれます。

例として:

        button   .fred   -fg red -text "hi there"
           ^       ^     \_____________________/
           |       |                |
         class    new            options
        command  widget  (-opt val -opt val ...)

一旦作られたら、ウィジェットへのパス名は新しいコマンドとなります。この新しいwidget commandは、actionを実行する新しいウィジェットを得るためのプログラマのハンドルです。CではこれをsomeAction(fred, someOptions)と表し、C++ではfred.someAction(someOptions)と表すでしょう。そして、Tkでは:

        .fred someAction someOptions

とします。オブジェクト名`.fred`がドットから始まっていることに注意してください。

あなたが期待するように、someActionに対する正当な値はウィジェットのクラスに依存します: fredがボタンなら`.fred disable`は機能しますが(fredはグレーになります)、fredがラベルなら機能しません(Tkではラベルの無効化をサポートしていません)。

someOptionsの正当な値はアクション依存です。`disable`のようないくつかのアクションは引数を必要としませんが、テキストエントリボックスの`delete`コマンドのような他のものは、削除するテキストの範囲を指定するための引数を必要とします。