Ruby/Tkでは各種ウィジェットクラスのメソッドとしてgridを呼び出します.
#!/usr/local/bin/ruby
require 'tk'
(0..3).each{|row|
(0..3).each{|column|
w = TkButton.new(nil, 'text' => "(#{row},#{column})")
w.grid('row'=>row, 'column'=>column)
}
}
Tk.mainloop
上記のプログラムを走らせると,下のようになります.
gridメソッドの書式は,
grid(['arg_key1' => value1, 'arg_key2' => value2, ...])
です. gridメソッドは0個以上の引数を持ちます.引数は全てハッシュの形式で記述します.
| キーの名前 | 働き |
|---|---|
| row | 配置する行を整数値で指定します.最上行が0です. |
| rowspan | 拡張する行数を整数値で指定します.例えば,2を指定した場合,rowで指定した行とその下の行がうち抜かれて配置されます. |
| column | 配置する列を整数値で指定します.最左列が0です. |
| columnspan | 拡張する列数を整数値で指定します.例えば,2を指定した場合,columnで指定した列とその右の列がうち抜かれて配置されます. |
| padx,pady | ウィジェットの外側に追加する余白の量.整数値で指定します. |
| ipadx,ipady | ウィジェットの内側に追加する余白の量.整数値で指定します. |
| sticky | セルの中でのウィジェットの詰め方.'n','e','s','w'および,その和('ne','news'など)で指定します. |
gridを使うと電卓などのレイアウトには大変効果的です.
#!/usr/local/bin/ruby
require 'tk'
var = TkVariable.new('0')
ary = ['off','on','EC','AC',
'7','8','9','/',
'4','5','6','*',
'1','2','3','-',
'0','.','=','+']
display = TkLabel.new(nil,
'background' => 'gray15',
'foreground' => 'gray85',
'anchor' => 'e',
'padx' => 15,
'justify'=>'right',
'textvariable' => var)
display.grid('row'=>0,'column'=>0,'columnspan'=>4,'sticky'=>'news')
(1..5).each{|row|
(0..3).each{|column|
w = TkButton.new(nil, 'text' => ary[(row-1)*4+column])
w.grid('row'=>row, 'column'=>column, 'sticky' => 'news')
}
}
Tk.mainloop
上のプログラムの場合,以下のようなレイアウトになります.(もちろん,このプログラムでは電卓の機能はありません.)