20.1.3 Tcl/Tk を (本当に少しだけ) 見渡してみる

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

注意:

このリファレンス資料を活用するには、Tk の短いプログラムを読んだり、 Tk コマンドの様々な側面を知っておく必要がままあるでしょう。 (下の説明のTkinter 版は、 20.1.4 節を参照してください。)

Tk スクリプトは Tcl プログラムです。全ての Tcl プログラムに同じく、 Tk スクリプトはトークンをスペースで区切って並べます。 Tk ウィジェットとは、ウィジェットのクラス、 ウィジェットの設定を行うオプション、そしてウィジェットに 役立つことをさせるアクション をあわせたものに過ぎません。

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

                classCommand newPathname options

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

newPathname
作成するウィジェットにつける新たな名前です。Tk 内の全ての名前は一意 になっていなければなりません。一意性を持たせる助けとして、 Tk 内の ウィジェットは、ファイルシステムにおけるファイルと同様、 パス名 (pathname) を使って名づけられます。 トップレベルのウィジェット、すなわち ルート. (ピリオド) という名前になり、その子ウィジェット階層もピリオドで 区切ってゆきます。ウィジェットの名前は、例えば .myApp.controlPanel.okButton のようになります。

options
ウィジェットの見た目を設定します。場合によってはウィジェットの挙動も 設定します。オプションはフラグと値がリストになった形式をとります。 Unix のシェルコマンドのフラグと同じように、フラグの前には `-' がつ き、複数の単語からなる値はクオートで囲まれます。

以下に例を示します:

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

ウィジェットを作成すると、ウィジェットへのパス名は新しいコマンドに なります。この新たなwidget command は、プログラマが新たに作成した ウィジェットにaction を実行させる際のハンドル (handle) に なります。Cでは someAction(fred, someOptions)と表し、 C++ではfred.someAction(someOptions)と表すでしょう。Tkでは:

    .fred someAction someOptions

のようにします。 オブジェクト名 .fred はドットから始まっているので注意してください。

読者の想像の通り、someAction に指定できる値はウィジェット のクラスに依存しています: fred がボタンなら .fred disable は うまくいきます (fred はグレーになります) が、fred がラベルならうまく いきません (Tkではラベルの無効化をサポートしていないからです)。

someOptions に指定できる値はアクションの内容に依存しています。 disable のようなアクションは引数を必要としませんが、 テキストエントリボックスの deleteコマンドのようなアクションには テキストを削除する範囲を指定するための引数が必要になります。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。