Forum und email

Caixas - GtkHBox e GtkVBox

O mais simples, mas os mais usados normalmente são GtkBoxes: GtkHBox e GtkVBox. Eles permitem os widgest em uma única linha, não mais, não menos. GtkHBox arranja eles horizontalmente, enquanto GtkVBox arranja eles verticalmente.

Você adiciona os widgets usando pack_start() ou pack_end() . pack_start() adiciona-os um após o outro a aprtir do início (esquerda para a direita, cima para baixo), enquanto pack_end() adiciona-os a partir do final (direita para esquerda, de baixo para cima).

Você pode influenciar o posicionamento ajustando os três parâmetros opcionais de pack_start() e pack_end() - veja a documentação deles.

Exemplo 7.1. Posicionamento dinamico simples com 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();
?>

Comece a demostração e redimencione a janela: O widget de multiplas linhas de texto ajusta o seu tamanho para caber em todo o espaço da janela que não seja necessário para o label ou para o botão. Mude o terceiro parâmetro de true para false no lugar onde scrwnd é empacotado - O que acontece?

Uma versão especial de GtkBox são GtkHButtonBox e GtkVButtonBox: Elas funcionam do mesmo modo que as suas contra partes, mas podem conter apenas GtkButton. Para compensar esta limitação, elas tem algumas funções de posicionamento normalmente necessárias para linhas de botões.