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
上のプログラムの場合,以下のようなレイアウトになります.(もちろん,このプログラムでは電卓の機能はありません.)