2008-01-01

ttk::notebook


今回は、テーマ・ウィジェット Ttk の ttk::notebook を紹介します。

このウィジェットは、タブをクリックすることで複数のウィジェットの表示を切り替えることができます。
BWidget や Incr Widgets、BLT など多くの拡張パッケージでも同様なウィジェットが用意されていますが、それらのウィジェットと比べると、この ttk::notebook には比較的シンプルな機能しか備わっていません。考えようによれば逆に使いやすいかもしれません。簡単なサンプルを以下に示しました。


ttk::notebook


#!/bin/sh
# the next line restarts using wish \
exec wish "$0" "$@"


# ----------------------------------------------------------------------------
# add a tab to notebook widget
# ----------------------------------------------------------------------------

proc addTab {w n} {
set m "${w}.tab${n}"
set tlab "TAB ${n}"

ttk::frame $m
$w add $m -text $tlab

return $m
}

# ----------------------------------------------------------------------------
# MAIN
# ----------------------------------------------------------------------------

wm title . "tk::notebook"
ttk::style theme use "clam"

# make the notebook
ttk::notebook .note
pack .note -fill both -expand 1 -padx 2 -pady 2

# TAB 1
set tab1 [addTab .note 1]
$tab1 configure -width 200 -height 200

# TAB 2
set tab2 [addTab .note 2]

# TAB 3
set tab3 [addTab .note 3]

# ---
# ttkwidget_notebook.tcl


変数 tab1, tab2, tab3 は各タブのフレーム・ウィジェットです。このフレーム上に表示したい子ウィジェットを配置します。

参考として、拡張パッケージの BWidget の NoteBook ウィジェットを使った同等なサンプルを示しました。ただし、タブの位置を下にしました。個人的には好んでタブの位置を下にしますが、Ttk の ttk::notebook では、残念ながらタブの位置を指定するオプションが用意されていません。


NoteBook ウィジェット(Bwidget)


#!/bin/sh
# the next line restarts using wish \
exec wish "$0" "$@"


package require BWidget

# ----------------------------------------------------------------------------
# MAIN
# ----------------------------------------------------------------------------

wm title . "NoteBook"

# make the NoteBook
NoteBook .nb -side bottom
pack .nb

# TAB 1
set tab1 [.nb insert end 1 -text "TAB 1"]
pack [frame $tab1.f -width 200 -height 200]

# TAB 2
set tab2 [.nb insert end 2 -text "TAB 2"]

# TAB 3
set tab3 [.nb insert end 3 -text "TAB 3"]

# show TAB 1
.nb raise 1

# ---
# bwidget_notebook.tcl

0 件のコメント: