« 反省会 | トップページ | 雑感 »

テケテケな日々(Ruby/tkメモの2)

■ラベルウィジェット
 長い文章でなく文字通り見出しになるような文字列などを表示するためのウィジェット。

require 'tk'

TkLabel.new('text' => "ラベル").pack
Tk.mainloop

 といった感じ。


■ボタンウィジェット

require 'tk'

TkButton.new('text' => "終了", 'command' => proc { exit } ).pack
Tk.mainloop

 text に表示する文字。command に処理を指定。上の例ではボタンを押すと終了します。行いたい処理を、proc { 処理 } とします。

 command 部分は長くなることもあるので、

TkButton.new {

          text "終了"
          command proc {
                    exit
          }
}

 としてみたり、

b = TkButton.new( 'text' => "終了")

b.command proc { exit }

 などとしてもよいようです。


■エントリウィジェット
 文字列の入力欄を作ります。

require 'tk'

x = TkVariable.new
TkEntry.new('textvariable' => x).pack
TkButton.new('text' => "値の表示", 'command' => proc { p x.value } ).pack
Tk.mainloop

 TkVariable は Tk でのデータの受け渡し用の変数。数値をいれた場合でも文字列として扱われているので処理の際には注意が必要。


■フレームウィジェット
 テキストやボタン、ラベルなどといったさまざまなウィジェットを実際に画面に配置するにあたって、関連するものをひとまとめにしたり、配置のための枠組みを提供するためのもの。これがないとだらだらと並ぶだけになってしまう。

require 'tk'

f1 = TkFrame.new.pack('side' => 'top')
f2 = TkFrame.new.pack('side' => 'top')
l1 = TkLabel.new(f1, 'text' => "上のラベル").pack
l2 = TkLabel.new(f2, 'text' => "下のラベル").pack
Tk.mainloop

 ウィジェットを new するときのはじめの引数に所属するフレームを指定。フレームをフレームに入れ子にすることもできる。所属するフレームがなければ nil を指定するか、なにも書かなくてもよいようです。

 これはフレームに限ったことではなくて、先の画像のところでも同様に所属先(どのウィジェットに対して表示するのか)が指定されています。

 pack というのはジオメトリマネージャと呼ばれるもので、これも配置を管理するもの。もっとも使いそうなのが side オプションで、所属する中でどの位置に配置するかを決めるもので、top bottom left right の四つから設定。この pack の順序の概念についてはやや特徴的なので、できれば「Ruby アプリケーションプログラミング」あたりを参照するほうが分かりやすい。基本的にはまだ配置されてない残りの部分においてそれぞれの指定が適用されていきます。

|

« 反省会 | トップページ | 雑感 »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: テケテケな日々(Ruby/tkメモの2):

« 反省会 | トップページ | 雑感 »