Tkは、GUI(グラフィカルユーザーインターフェース)を開発するための、オープンソースで
クロスプラットフォーム対応のウィジェットツールキットです。これは、ボタン、メニュー、テキストボックス、フレーム、ラベルなど、デスクトップアプリケーションの開発において一般的に必要となる様々なウィジェットを提供します。
開発の経緯
Tkは、カリフォルニア大学バークレー校のジョン・オースターハウトによって、スクリプト言語
Tclの拡張として開発されました。Tkという名称は「Tool Kit」の略であり、その名の通り、GUI開発を容易にするためのツール群を提供します。
対応プラットフォーム
当初は
Unix系OSで開発されましたが、後にMacintoshや
Microsoft Windowsなどの主要な
オペレーティングシステムに移植され、異なるプラットフォームでも一貫したGUIアプリケーションの開発が可能になりました。
機能
初期のTkは、各プラットフォームの標準的なUIとは異なる外観でしたが、Tk 8以降では、各OSのネイティブなルック・アンド・フィールをサポートするようになりました。これにより、メニューやボタンなどの表示が、各プラットフォームの標準的なソフトウェアの作法に沿って表示されるようになり、ユーザーエクスペリエンスが向上しました。
さらに、Tk 8では、外部とのドラッグアンドドロップや非矩形のウィンドウのサポート、ネイティブウィジェットの統合など、多くの機能拡張が導入されました。Tk 8.5では、Tk Tileという新しいテーマエンジンが正式に採用され、Ttk Widgetを通じてGUIの見た目を柔軟にカスタマイズできるようになりました。
Tkは
Unicodeの基本多言語面(BMP)をサポートしていますが、32ビット
Unicodeのサポートはまだ実装されていません。また、
Unix系のシステムでは、Tk 8.4以前はビットマップフォントを使用していたものの、Tk 8.5以降ではアンチエイリアスフォントが利用できるようになり、より滑らかで美しいフォント表示が可能になりました。
Tclとの連携
Tclでは、コマンドラインインタプリタであるtclshを使用しますが、Tkは、wish(Windowing Shell)という別のコマンドラインインタプリタを通じて容易に利用できます。
他の言語との連携
Tkは
Tclだけでなく、他の多くのプログラミング言語からも利用できます。例えば、
Ada(TASH)、
Perl、
Python、
Ruby、
Common Lispなど、様々な言語用のバインディングが存在します。
特に
Perlでは、
Tcl::TkやTkxといったモジュールを通して
Tclを経由してTkにアクセスする方法と、
Perl/Tkという
Perlから直接Tkの機能を利用できるネイティブな機構も提供されています。
Pythonや
Rubyも、
Tclをブリッジとして使用するバインディングを通してTkを利用できます。
関連情報
Tcl and Tk website: Tkの公式サイト。
Active
Tcl - Tk manual: Active
TclによるTkマニュアル。
Tcl-Tk - Curlie: TclとTkに関連する情報を集めたリンク集。
関連項目
Tcl: Tkが開発されたスクリプト言語。
Tkinter: Python用のTkバインディング。
GTK: The GIMP Toolkit。
Qt: クロスプラットフォームのアプリケーション開発フレームワーク。
wxWidgets:
クロスプラットフォームのGUIライブラリ。