Создаётся таблица так:
$table = new GtkTable();
Для добавления в таблицу виджетов используется метод attach(). Первым параметром ему передаётся добавляемый виджет. Второй и третий параметры указывают, в каких ячейках по горизонтали будет располагаться виджет. Четвёртый и пятый - по вертикали. Причём, указываются не сами ячейки, а промежутки между ними. Отсчёт ведётся с нуля. Для удобства восприятия приведу небольшой набросок нашей сегодняшней программы, тогда вам всё станет понятно:
Добавляем виджеты:
$table->attach(new GtkLabel('Строка 1'), 0, 1, 0, 1);Как видите, "Строка 3" растянута на две ячейки по горизонтали.
$table->attach(new GtkLabel('Строка 2'), 1, 2, 0, 1);
$table->attach(new GtkLabel('Строка 3'), 0, 2, 1, 2);
Теперь остаётся только создать окно и добавить в него таблицу, но это вы уже умеете.
Как всегда, в конце статьи привожу скриншот получившейся программы и полный её код:
<?php
$table = new GtkTable();
$table->attach(new GtkLabel('Строка 1'), 0, 1, 0, 1);
$table->attach(new GtkLabel('Строка 2'), 1, 2, 0, 1);
$table->attach(new GtkLabel('Строка 3'), 0, 2, 1, 2);
$window = new GtkWindow();
$window->connect_simple('destroy', array('Gtk', 'main_quit'));
$window->set_size_request(300, 150);
$window->add($table);
$window->show_all();
Gtk::main();
?>
6 комментариев:
Отличный блог для новичков, продолжай 5 баллов.
З.Ы.
Было бы полезно про обработку сигналов почитать.
Как раз в следующей статье собирался описать такие виджеты, как кнопки, поля ввода, переключатели и соответствующие им сигналы.
как я понял 2 контейнера нельзя поместить одновременно в окно?
получилось только поместить контейнер в контейнер:
$vbox->pack_start($table, FALSE, FALSE);
($vbox - из пред. примера)
Дмитрий, для того, чтобы поместить 2 контейнера в окно необходимо создать третий, в него поместить первые два, и добавить его в окно методом add().
Большое спасибо, разобрался.
А возможно задать ширину/высоту ячейки?
Отправить комментарий