28. LablTk ライブラリ: Tcl/Tk GUI インタフェース

labltk ライブラリを使うと Objective Caml プログラムから Tcl/Tk にアクセスすることがてきます。 このインタフェースは自動的に生成されます。関数の動作の詳細は、Tcl/Tk の本や man ページを参照してください。 関数の型を調べるために ocamlbrowser を使うのもよいでしょう。 型はライブラリ自身の最もよいドキュメントです。

labltk ライブラリを使用するプログラムは以下のようにリンクしてください。

ocamlc other options -I +labltk labltk.cma other files
ocamlopt other options -I +labltk labltk.cmxa other files
  
[注記]Unix

labltk ライブラリは Tcl 7.5/Tk4.1 から Tcl/Tk 8.4 までの Tcl/Tk がインストールされたすべてのシステムで使用することができます。ベータ版には互換性に問題があるものもあるので注意してください。

ライブラリが正しくコンパイルされなかった場合には、 configure スクリプトを -tkdefs switches をつけてもう一度実行してください。 swiches は、tcl.htk.h への C 言語スタイルのインクルードパスのリストです。例えば '-I/usr/local/include/tcl8.4 -I/usr/local/include/tk8.4' などです。

labltk ライブラリをトップレベルから使いやすくするためのスクリプトがインストールされています。

labltk

これは labltk ライブラリを含んだトップレベル環境で、様々なモジュールを使えるようにパスがあらかじめ設定されています。 この環境には Unix ライブラリと Str ライブラリを使うためのコードも含まれています。 labltk は、 ocaml コマンドの代わりに使うことができます。

[注記]Windows

labltk ライブラリは、 Tcl/Tk 8.4 を使うようにあらかじめコンパイルされています。 まず始めに Tcl/Tk 8.4 をインストールします。 Tcl/Tk 8.4 は http://www.activestate.com/products/ActiveTcl/ からダウンロードすることができます。 インストールが終わったら、(Tcl のインストール先の bin ディレクトリにある) tcl84.dlltk84.dll をパスに含まれるディレクトリに置きます。

特別なトップレベル環境は用意されていませんが、通常のトップレベル環境から次のコマンドを入力することでライブラリをロードすることができます。

# #directory "+labltk";;
# #load "labltk.cma";;
    

コマンドラインから直接ロードすることもできます。

C:\ocaml\bin> ocaml -I +labltk labltk.cma
    

labltk ライブラリは多くのモジュールから構成されています。

Bell                Imagebitmap         Place
Button              Imagephoto          Radiobutton
Canvas              Label               Scale
Checkbutton         Listbox             Scrollbar
Clipboard           Menu                Selection
Dialog              Menubutton          Text
Entry               Message             Tk
Focus               Option              Tkwait
Frame               Optionmenu          Toplevel
Grab                Pack                Winfo
Grid                Palette             Wm
  

これらのモジュールについてここで詳細に述べるのは現実的ではありませんので、 Tk モジュールの中のいくつかの基本的な関数を述べることにします。ただし、その他の多くのモジュールについても Tcl の man ページをそれぞれのモジュールの名前で探せば情報を見つけることができます。