FAQ

ウィンドウのタイトル

ウィンドウのタイトルを変更する方法です。

wm title . {新しいタイトル}

ウィンドウ終了処理

ウィンドウ終了処理の方法です。
Windowsでは、ウィンドウ右上の×ボタンを押したときの処理となります。

wm protocol . WM_DELETE_WINDOW {exit}

フォント

デフォルトのフォントを手っ取り早く設定する方法です。
Windows版のデフォルトは、{{MS Sans Serif} 8}になっています。

option add *Font {{MS 明朝} 10}

砂時計

時間のかかる処理中にカーソルを砂時計表示にする方法です。

proc busy {sw} {
    global cursor
    if {$sw == "on"} {
	foreach child [winfo children .] {
	    set cursor(c$child) [$child cget -cursor]
	    $child configure -cursor watch
	}
    } else {
	foreach child [winfo children .] {
	    $child configure -cursor $cursor(c$child)
	}
    }
}
busy on
# 時間のかかる処理
busy off

OS依存

OS依存の処理を切り分ける方法です。

switch $tcl_platform(platform) {
windows	{}
unix {}
macintosh {}
default {}
}
parray tcl_platform
=>tcl_platform(byteOrder) = littleEndian
=>tcl_platform(machine)   = intel
=>tcl_platform(os)        = Windows 95
=>tcl_platform(osVersion) = 4.0
=>tcl_platform(platform)  = windows
=>tcl_platform(user)      = s-imai

環境変数

環境変数の内容を確認する方法です。

parray env
=>env(HOME) = c:\
=>env(TEMP) = c:\temp
=>env(PATH) = ...

第2週の月曜日

西暦2000年1月の第2週の月曜日(成人の日)を求める方法です。

clock format [clock scan "2 monday" -base [clock scan 1/1/2000]] -format "%D"
==>01/10/00

リストボックスの背景色 (Windows Only)

リストボックスの背景色をシステムカラーにする方法です。
Windows版のデフォルトは、SystemButtonFaceになっています。

pack [listbox .l -bg SystemWindow]

テキストのセレクション時の色

テキストのセレクション時の色を最前面に設定する方法です。
デフォルトでは、タグに付けた色が最前面になってしまいます。

pack [text .t]
.t insert end {ここをセレクションしてください。}
.t tag add foo 1.0 1.end
.t tag configure foo -background red -foreground green
.t tag raise sel foo ;# この行があるとないとで大違い

セレクション

セレクションを操作する方法です。

selection clear
selection get
selection own

クリップボード

テキストに対してクリップボードを操作する方法です。

proc Copy w {
    if {![catch {set data [$w get sel.first sel.last]}]} {
	clipboard clear -displayof $w
	clipboard append -displayof $w $data
    }
}
proc Cut w {
    if {![catch {set data [$w get sel.first sel.last]}]} {
	clipboard clear -displayof $w
	clipboard append -displayof $w $data
	$w delete sel.first sel.last
    }
}
proc Paste w {
    global tcl_platform
    catch {
	if {[string compare $tcl_platform(platform) "unix"]} {
	    catch {
		$w delete sel.first sel.last
	    }
	}
	$w insert insert [selection get -displayof $w -selection CLIPBOARD]
    }
}

外部コマンド

外部コマンドの実行方法です。
Windowsの例で、ブラウザをバックグランドで起動します。

exec $env(COMSPEC) /c start c:/sample.html &

バルーン・ヘルプ

Widgetにバルーン・ヘルプを付ける方法です。
実現するには、balloon.tclを使います。

source "./balloon.tcl"
option add *highlightThickness 0 
label .head -text "move the pointer\nhere" -relief groove
label .suite -text "another balloon here" -relief groove
button .bye -text "Quit" -command exit
pack .head -side top -fill x -pady 10 -padx 10
pack .suite .bye -side right -pady 10 -padx 10
pack .bye -side bottom -pady 10 -padx 10
set_balloon .head "first balloon"
set_balloon .suite "second balloon"
set_balloon .bye "bye bye"

フォント・ダイアログ

Tclには、標準でフォント設定ダイアログがありませんが、BWidget Packageや Combobox Widgetのサンプルを使うと簡単に実現できます。

印刷ダイアログ

Tclには、標準で印刷ダイアログがありませんが、 Windowsでは、以下のTcl拡張が使えます。


Tcl/Tk のエキスパートを目指す人のために