Forum und email

Кутии - GtkHBox и GtkVBox

Най-простите, но в същото време най-често използваните са GtkBox-овете: GtkHBox и GtkVBox. Тяхното предназначение е за подреждане на уйджетите в една права линия. GtkHBox ги организира по хоризонталата, а GtkVBox по вертикалата.

Добавянето на уйджетите става чрез pack_start() и pack_end() . pack_start() ги добавя един след друг последователно, започвайки от началото (от ляво на дясно или от горе на долу), докато pack_end() ги добавя в обратен ред (от дясно на ляво или от долу на горе).

Можете да управлявате разположението им чрез трите допълнителни параметъра на pack_start() и pack_end() . За повече подробности вижте тяхната документация.

Пример 7.1. Просто динамично разположение чрез GtkVBox

<?php
$w = new GtkWindow();
$w->set_title('GtkBox test');
$w->connect_simple('destroy', array('gtk', 'main_quit'));

$lbl = new GtkLabel('Your name:');
$scrwnd = new GtkScrolledWindow();
$txt = new GtkTextView();
$scrwnd->add($txt);
$btn = new GtkButton('Send');

$vbox = new GtkVBox();
$w->add($vbox);

$vbox->pack_start($lbl, false);
$vbox->pack_start($scrwnd, true, true);
$vbox->pack_start($btn, false);

$w->show_all();
Gtk::main();
?>

Стартирайте демото и променете размера на прозореца. Многоредовият текстов уйджет променя размерът си, за да запълни пространството в прозореца, образувано между етикета и бутона. Променете третият параметър от true на false в пакета на scrwnd и вижте какво ще се получи.

Специална версия на GtkBox-овете са GtkHButtonBox и GtkVButtonBox: Тяхното предназначение е същото като кутиените контейнери, но могат да съдържат само GtkButton-ите. За компенсация на това ограничение те имат специални функции, използвани при поредица от бутони.