新規作成  編集  Ruby-GNOME2 Project Website  ページ一覧  検索  更新履歴  編集履歴  RSS  ログイン

gtk2-tut-packing-box

ボックスの詳細

この柔軟性が理由で、GTKのパッキングボックスは最初は解りにくいかもしれない。 沢山のオプションがあり、これらどのように組み合わされるのかすぐには理解しにくいだろう。 しかし結局は、基本的に5つの異るスタイルにまとめられる。

packbox1.png

各行は幾つかのボタンを持った水平ボックス(HBox)を一つ含んでいる. Gtk::Box#backはこれらのボタンをこの水平ボックスにパックする呼び出しを短くしたものである. 各々のボタンはこの水平ボックスに同じ方法でパックされる(つまり、Gtk::Box#pack_start関数で同じ引数が使用される).

これはGtk::Box#pack_startメソッドのシグニチャである.

Gtk::Box#pack_start(child, expand, fill, padding)

最初の引数はボックス内にパックされるオブジェクトである. ここではオブジェクトは全てボタンであるので、ボックスの中にはボタンがパックされる.

Gtk::Box#pack_startGtk::Box#pack_endのexpand引数が

trueの場合
ウィジェットがボックスの余分な領域全体に渡って配置されるため、ボックスは与えられた領域を全て使うように広がる
falseの場合
ボックスはウィジェットの大きさにまで縮められる

expandをfalseに設定することで右や左にウィジェットを寄せることができる。 さもなければ、これらはボックスにフィットするように拡張される。 Gtk::Box#pack_start あるいはGtk::Box#pack_endで一つだけしかパッキングされない場合でも同様の効果が得られる。

Gtk::Box#packのfill引数が

trueの場合
オブジェクトの大きさをすき間を埋めるように広げる
falseの場合
オブジェクトの周りにすき間をつくる

これはexpand引数がtrueの場合のみ効果を持つ。

新しいボックスを作成する際の引数は次のようになる.

Gtk::HBox.new(homogeneous, spacing)

Gtk::HBox.newのhomogeneous引数(Gtk::VBox.newも同様)はこのボックス中の全オブジェクトが同じサイズであるかどうかを制御する. (つまりGtk::HBoxでは同じ幅、あるいはGtk::VBoxでは同じ高さ). もしこの引数がtrueの場合、 Gtk::HBox#packのexpand引数は常にtrueになる.

spacing(ボックスを作成する時に設定)とpadding(オブジェクトをパックする時に設定)の違いは何であろうか? スペーシングはオブジェクト同士の間に加えられ、パディングはオブジェクトの両サイドに加えられる。 次の図によってこれがはっきりするだろう。

packbox2.png

次は上記のイメージを作成するスクリプトである. かなり詳しくコメントを書いてあるので,理解するのはそれほど難しくないだろう. 実際に動かして遊んでみよう.

更新日時:2009/04/04 04:22:37
キーワード:
参照:[gtk2-tut]