Forum und email

Табулаторно разполагане чрез GtkTable

Докато създаването на динамични разполагане чрез GtkBox-овете е много лесно, то е сравнително трудно да подредите уйджетите така, че етикетите взаимодействащите си уйджети да имат еднаква ширина, независимо от тяхното съдържание. За да получите табулаторно подреждане е най-добре да получите GtkTable. Уйджетите могат да се разполагат върху няколко колони и реда и да имат различен размер при попълването.

Пример 7.2. Табулаторно разполагане

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

$lbl1   = new GtkLabel('Email address:');
$lbl2   = new GtkLabel('Id:');
$lbl3   = new GtkLabel('Name:');
$align3 = new GtkAlignment(0.0, 0.5, 0, 0);
$align3->add($lbl3);
$txt1   = new GtkEntry();
$txt2   = new GtkEntry();
$txt3   = new GtkEntry();

$table  = new GtkTable(2, 2);
$table->attach($lbl1  , 0, 1, 0, 1, 0);
$table->attach($lbl2  , 0, 1, 1, 2, 0);
$table->attach($align3, 0, 1, 2, 3, Gtk::FILL);
$table->attach($txt1  , 1, 2, 0, 1);
$table->attach($txt2  , 1, 2, 1, 2);
$table->attach($txt3  , 1, 2, 2, 3);

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

Изпълнявайки примерът, ще видите, че етикетът Id е центриран хоризонтално. По подразбиране, се запълват и от двете страни и заемат цялото свободно пространство. В повечето случаи това върши работа. Не е рационално обаче при изполването с GtkLabel - Етикетът трябва да бъде подравнен в едната страна. При използване на функцията set_justify() се подравняват множество етикети, затова ние ще използваме GtkAlignment за да направим правилно подравняване - етикетът Name показва този резултат.