raiseとlower

ウィンドウのスタック順(Z順)を操作するコマンドにraiseとlowerがあります。
raiseは、ウィンドウを最前面に移動し、lowerは、ウィンドウを最背面に移動します。

# ウィンドウを最前面に移動
raise .

# ウィンドウを最背面に移動
lower .

しかし、raiseで最前面に移動したウィンドウは、一時的に最前面になるだけです。
ウィンドウを常に最前面に貼り付けるには、BLTのraiseとlowerを使う必要があります。

package require BLT

# ウィンドウを最前面に貼り付け
::blt::winop raise .

# ウィンドウを最前面に貼り付け
::blt::winop lower .

raiseとfocus

focusは、ウィンドウに入力フォーカスをあてます。ウィンドウを最前面にしたりはしません。
focusされたウィンドウはキー入力の対象になり、通常は入力キャレットが点滅します。

pack [entry .e]
raise .

# 入力フォーカスをあてる
focus .e

Tips

Tcl/Tkのアプリケーションを起動すると、メインウィンドウにフォーカスがあたらない状態で起動します。
そんな時は、スクリプトの先頭でメインウィンドウをraiseかdeiconifyすれば解決します。

wm deiconify .
pack [button .b -text Push -command exit]

LinuxのSawmillウィンドウマネージャは、フォーカス動作のオプションに
「ウィンドウがはじめて表示される時にフォーカスする」という設定があり、
チェックを入れておくとraiseしなくて済むので便利です。
その他のウィンドウマネージャにも同様の機能があるかもしれません。
HELPを読んで探してみてください。