Wish Tcl/Tk 入門

Wish Tcl/Tk 入門

1. 実行の方法

Unix 上での実行は、次の 4 つの 手順で行います。

  1. スクリプトの file を作る ( % mule file )
  2. 日本語の場合には EUC コード にする。( % nkf -e file >! file.tcl)
  3. 実行可能にする ( % chmod +x file.tcl )
  4. 実行する ( % file.tcl )

Windows で使う場合には、日本語は Shift+JIS コードにする必要 があります。だいたい自動で処理されているはずです。文字化けし なければ ok です。

例えば Unix 上で 保存したfile を Windows 上で使う場合に は (nkf -s file >! file.tcl) で Shift+JIS にしてください。 Windows 上でもコード変換するフリーソフトがあります(例えば、 nkf_win32)。

Windows では 実行可能にする必要はありません。その代わり file.tcl というように、.tcl をつけ この属性とtcl/tk を結びつ けることが必要です。Windows には、man (用語の説明) がありま せん。そのかわり help file が付属しています。

1.1 Window を表示 (button, pack)

(実行例 1.1) Hello World を表示します。
#!/bin/sh
# the next line restarts using wish \
exec wish "$0" "$@"
#
# button ボタン .b1 の名称を 定義。. は top window
#          -text " 名称 "      -command " 処理 "
button .b1 -text "Hello World" -command exit
#
# pack ボタン .b1 を詰めて表示する。これがないと表示しない。
#
pack .b1

最初の 3 行は、wish を起動するためのおまじないです。この 部分を全てのスクリプトでマウスでコピーしてお使いください。こ う書けばWindows ではコメントとして処理してくれます。

文頭にある # だけがコメントです。# 以下に説明を書きます。 良いプログラムは、良いコメントが必要です。

button は ボタンの名称を定義します。.b1 が ボタンの名前 です。先頭の "." は、top window (toplevel) の意味があります ので、省けません。.b1 は top window の 下にある b1 という意 味です。

ボタンを定義しても表示されません。表示するためには、 『置け』というコマンドが必要です。pack は window に詰めて置 くコマンドです。

これを file11 に save して

% chmod +x file11 で 実行可能にします。

% file11 で実行です。

実行結果。 window の中の Hellow world の所を マウスで クリックすると、 終了( -command exit) します。うまくいきましたか? (ここの web の ボタンを押してもダメですよ! )

1.2 ボタンの属性。configure

(実行例 1.1) ボタンを 3 つ作ることをします。信号機です。
#!/bin/sh
# the next line restarts using wish \
exec wish "$0" "$@"
# toplabel window . の タイトルを信号とします。 
wm title . 信号
#
# ボタン .b1 の名称を 定義。. は top window
#          -text " 名称 "      -command " 処理 "
#          -fg 文字のいろ -activebackground マウスが来たときの色
#
button .b1 -fg blue -activebackground blue \
      -text "青" -command { . configure -bg blue }
button .b2 -fg yellow -activebackground yellow \
      -text "黄" -command { . configure -bg yellow }
button .b3 -fg red -activebackground red \
      -text "赤" -command { . configure -bg red }
# ボタン .b1 を詰めて表示する。-expand yes サイズがかわって
# も追従 -ipadx 10 -ipady 20 余白
# pack .b1 .b2 .b3 -expand yes 
# pack .b1 .b2 .b3 -ipadx 10 -ipady 10 -expand yes 
# pack .b1 .b2 .b3 -side left  -padx 10 -pady 10
pack .b1 .b2 .b3 -side left -padx 10 -pady 10 \ 
       -ipadx 10 -ipady 10 -expand yes 

\ は コマンドが 1 行に 入り切らないときの継続です。

{ ... } は 1 つの コマンドで ... が複数行にわたっても1 行とみなします。この場合には \ は不要です。( 1 行の場合 { ... } の中がコメント行が入れられません。)

上を実行してみてください。また pack のいろいろな コメントを外せ ば、pack がどのように動くかが分かります。Unix なら

% man button

で このほかの属性がわかります。tk の build-in command と してでます。属性を変更するのは、configure command です。この 場合には、何の属性を変更するかを コマンドより先に示します。 上の例では、親 window . を configure コマンドによって 背景の いろ (-bg) を変更します。別の configure コマンドがない限り この設定は保存されます。

多くのコマンドは、pack のように コマンド 道具(widget) ま たは window 属性の順に指定します。

1.3 ボタンの配置。place

(実行例 1.1) ボタンを pack のかわりに、place で配置します。
#!/bin/sh
# the next line restarts using wish \
exec wish "$0" "$@"
#
# toplabel window . の タイトルを Place にします。 
#
wm title . "Place"
#
# toplabel window . の 設定を configure で変更します。
# window 幅 を 320 ピクセル、高さを 200 ピクセルにします。
#
. configure -width 320 -height 200
#
# ボタン .bt1 を定義します。
# 幅 半角 10 文字 高さ 5 文字分 です。
#
button .bt1 -width 10 -height 5 -fg red -bg yellow \
-activeforeground orange -activebackground brown -text 絶対的配置\nボタン1
#
# ボタン .bt1 を 左上から数えて、(100, 100) の位置に置きます。
# (100,100) の位置が、ボタンの中央になる(-anchor c)ようにします。
#
place .bt1 -x 100 -y 100 -anchor c
#
# ボタン2 を定義します。
#
button .bt2 -fg yellow -bg red \
-activeforeground black -activebackground white \
-text 相対的配置\nボタン2
#
# 今度はボタンを window の 大きさを 1 としたときの 相対的な大きさ
# で配置します。この場合は window の大きさに追従します。
# -relx -rely 相対的な位置 -anchor nw (北西=左上)
# -relheight 相対的な高さ -relwidth 相対的な幅
#
place .bt2 -relx 0.6 -rely 0.7 -anchor nw \
           -relheight 0.25 -relwidth 0.36

window の大きさを変えて見てください。右下の角で大きさを 変えると様子が良く分かります。

place を使えば、自由に配置することができます。pack を使うと 簡単に配置することができます。うまく使い分けてください。

ボタンを作っただけでは、何も実行しませんね。次に入出力を いれて計算をさせてみましょう。

\n は改行を意味します。c 言語を知っている人は分かりやす いですね。他の言語ににているコマンドがいっぱいあります。ほと んど同じ意味に使います。

注: Wish は 大文字 小文字を区別します。ボタンの名称の先頭は 小文字であることが必要のようです。大文字にすると error が置 きました。

いい忘れましたが、実行するには wish や tcl/tk がそれぞれの OS で必要です。Free の software ですので、ftp 検索サイトで keyword tcl や tk で 日本語パッチ (日本語が使えるようになっ ている修正) の入っているものを 選択してください。 http://www.scriptics.com が、開発元です。ここで現在の version 情報を得ることができます。ここでは software の install 方法は説明しません。他の Web ページや 本を参考にして ください。


rsaito@ee.uec.ac.jp