グリッド(gridメソッド)

グリッドは,作成したウィジェットを配置するものです.グリッドメソッドgridは,「どの行のどの列に配置する」という方式で配置します.packとちがい,原則として配置順序に依存しないので,格子状の配置をしたい場合に特に有効です.

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

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


戻る