ビジュアル的な配慮だから、ここまでするのは開発の効率を考えると合理的でないかも。
またRaspberryPiの実行環境では描画が遅いのであまりお勧めできない。
様々なウィジェットを用意して、それを思った位置に配置するのをテキストで編集するのはなかなか難しい。
RADなんかの開発環境にはかなわない。
ここでは、フレームを二つ用意して、それそれにテキストとボタンのウィジェットを配置して、それそれを別にパックしたものを縦にパックするという方法で、ややこしいテキストでの編集を行った。
frame1をdimgrayで作り、そのラベルをテキスト” ”で囲まれた範囲で示し(” ”はスペースが入らなければ省略可能。全角かなと半角英数を間違えないように)背景をdimgray、前景をwhiteに指定。
-padx 14と-pady 8は下のボタンの貼り付けを行った際に、余白ができるのでそれを埋めるためにアバウトに手打ちでサイズが合うように確認しながら決めた値。
続いてframe2。
image create photoでファイル名(ディレクトリをフルパスで/home/pi/….gifでもいい)を指定してやり、「Tk_button_bg」というTcl/Tk上で使える名前をつけて(a b c dなんかでもいい)画像を設定。
ボタン2はテキスト「はい」「キャンセル」を表示する。コマンドはここではブランクにしておいた。
-command {exec … &}と書く。
バックグラウンドジョブを示す&を省略するとウィンドウが潰れてしまうので注意。
button2の文字色をwhite、ボタンの色をオレンジに指定してやって、-compoundでcenter(画像と文字が重なるように配置)を選択。
-padx 0 -pady 0はボタンと画像の間の縁の幅を0にしてギリギリまでボタンを小さくする設定。
packの-side leftは左から順番に詰めていってくださいということ。
省くとデフォルトでは縦に上から順番に並べてしまう。
#!/usr/bin/wish
frame .f1 -bg dimgray
label .f1.mesg -text "プリンタの設定を行いますか?" -bg dimgray -fg white
pack .f1.mesg -padx 14 -pady 8
frame .f2 -bg dimgray
image create photo Tk_button_bg -file Tk_button.gif
button .f2.b1 -compound center -text "はい" -image Tk_button_bg -command {}
button .f2.b2 -compound center -text "キャンセル" -image Tk_button_bg -command {}
.f2.b1 configure -fg white -bg orange -bd 4 -padx 0 -pady 0
.f2.b2 configure -fg white -bg orange -bd 4 -padx 0 -pady 0
pack .f2.b1 .f2.b2 -side left -padx 8
pack .f1 .f2
Tk_button_bg.gifの画像。![]()
見せかけ倒しのGUI。
Tcl/Tkを使いたくないのはそのビジュアルの悪さ。
なんとか使いたくなるようにカスタマイズしてみた。
