Ruby/TkではTkFrameクラスが相当します.
代表的な使用例を示します.
#!/usr/local/bin/ruby
require 'tk'
frame1 = TkFrame.new(nil)
frame1.pack('side' => 'left')
frame2 = TkFrame.new(nil)
frame2.pack('side' => 'right')
w1 = TkLabel.new(frame1, 'text' => '左上', 'relief' => 'raised')
w1.pack('side' => 'top', 'fill' => 'both')
w2 = TkLabel.new(frame2, 'text' => '右上', 'relief' => 'raised')
w2.pack('side' => 'top', 'fill' => 'both')
w3 = TkLabel.new(frame1, 'text' => '左下', 'relief' => 'raised')
w3.pack('side' => 'top', 'fill' => 'both')
w4 = TkLabel.new(frame2, 'text' => '右下', 'relief' => 'raised')
w4.pack('side' => 'top', 'fill' => 'both')
Tk.mainloop
上記のプログラムを走らせると,下のようになります.
このレイアウトをFrameなしでパッカーで配置することはまず出来ません.なぜなら,パッカーは指定した側の領域を「早い者勝ち」で埋め込んで行くからです.
TkFrameクラスのインスタンス変数を以下に示します.
| インスタンス変数名 | 役割 |
|---|---|
| borderwidth | 枠の幅.整数値で指定. |
| cursor | マウスカーソルの形. |
| highlightcolor | ウィジェットにフォーカスがある時の枠の色. |
| highlightthickness | ウィジェットにフォーカスがある時の枠の幅. |
| relief | ウィジェットの凹凸.'raised'または'sunken'で指定. |
| background | ウィジェット全体の背景色. |
| height | ウィジェットの高さ. |
| width | ウィジェットの幅. |