| |
| Tcl/Tk 8.5のttkウィジェットを使う(1) |
バージョン8.5の新機能のうち、themed Tk(ttk)ウィジェットの紹介です。
ttkはTileというTk拡張ライブラリから取り込まれたもので、
従来のTkよりも、各ウィジェットの外見(今風に言うと「ルック&フィール」)が、
より各OS/プラットフォームに合ったものになっているのが最大の特長です。
これらは::ttk名前空間に追加されており、従来のウィジェットも引き続き併用できます。
「themed」という名前の通り、「Windowsテーマ」のように、
デスクトップのスタイル(テーマ)を設定することで、
全ウィジェットのスタイルを一括して設定することも意図して作られてはいますが、
現状ではそれは副次的なものに過ぎません。
なんといっても、外見が各OS/プラットフォームとなじむものになる意義が大きいといえましょう。
またttkでは、従来のTkではサポートされていなかった種類のウィジェットが4つ追加されています。
コンボボックス(combobox)、ノートブック(notebook=BLTでいうタブセット、Tixのノートブック)、
ツリービュー(treeview)、そしてプログレスバー(progressbar=Tixでいうメーター)です。
またsizegripは一般には、ウィジェットと呼んでいいのか微妙な物ではありますが、
これも追加されています。
一方で、従来の全てのTkウィジェットにttk版が用意されているわけではないので注意が必要です。
例えば、canvasやlistboxには、ttk版はありません。
Tkではサポートされていなかったコンボボックスです。
コンボボックスという名前のウィジェットは、
GUIライブラリによっては違う機能のこともありますが(例えばAdobe Flex)、
ほとんどのGUIライブラリでは、
- 見た目はテキストボックスとリストボックスが上下にくっついて並んでいる。
- リストから選択できるほか、キー入力で独自の値を入力することもできる。
というこの2点を備えたものを言います。
そしてttkでもその通りです。
ttk::combobox .cboa -textvariable cbov -values {りんご みかん メロン ぶどう}
set cbov "ぶどう"
# ↑または
#.cboa current 3
# も同じ意味
ttk::button .cmda -text "押す" -command {
tk_messageBox -message "入力/選択された値=<[.cboa get]>
変数の値=<${cbov}> インデックス=<[.cboa current]>"
}
pack .cboa .cmda -side top
|
プルダウン部分に表示する選択項目の一覧は、-valuesオプションで指定できます。
今入力/選択されている値を知るには、
「-textvariableオプションで指定した変数の値を取り出す」
「comboboxウィジェットのgetコマンドを使う」の2つの方法があります。
また、選択項目のうち何項目目が選択されているかのインデックス(先頭が0)を知るには、
currentコマンドが使えます。
currentコマンドは、キー入力された結果、今の値が選択項目のいずれとも違う値である場合は、
-1を返します。
逆に、選択項目のうちいずれかを選択状態にしたい場合は、
「-textvariableで指定した変数に、対象の項目の値をsetで代入する」
「currentコマンドにそのインデックスを引数として渡す」
の2つの方法があります。
sizegripウィジェットは、toplevelウィンドウの右下に表示して使います。
ドラッグすると、ウィンドウのサイズ変更ができます。
pack [ttk::frame .statusbar] -side bottom -fill x
pack [ttk::sizegrip .statusbar.grip] -side right -anchor se
|
set fa [ttk::frame .fa]
grid [canvas $fa.can -bg #808080 -width 200 -height 200] -row 0 -column 0
grid [ttk::sizegrip $fa.grip] -row 1 -column 0 -sticky se
pack $fa
|
(first uploaded 2008/11/03 last updated 2011/01/10, MISUMI URANO)
|