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

gtk2-tut-packing-box 差分 - Ruby-GNOME2 Project Website

  • 最後の更新で追加された部分はこのように表示します。
  • 最後の更新で削除された部分はこのように表示します。

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

{{image_left("packbox1.png")}}{{br}}

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

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

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

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

Gtk::Box#pack_startやGtk::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(オブジェクトをパックする時に設定)の違いは何であろうか?
スペーシングはオブジェクト同士の間に加えられ、パディングはオブジェクトの両サイドに加えられる。
次の図によってこれがはっきりするだろう。

{{image_left("packbox2.png")}}{{br}}

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