Показ в окне нескольких графических элементов управления

Задача
Необходимо показать в окне более одного элемента управления.

Решение
Добавьте все элементы управления в контейнер, а затем добавьте контейнер к окну:

// создаем окно
$window = &new GtkWindow();
// создаем контейнер - GtkVBox, который выравнивает элементы
// управления по вертикали
$container = &new GtkVBox();
// создаем текстовый элемент управления и добавляем его в контейнер
$text_entry = &new GtkEntry();
$container->pack_start($text_entry);
// создаем кнопку и добавляем ее в контейнер
$a_button = &new GtkButton('Abort');
$container->pack_start($a_button);
// создаем другую кнопку и добавляем ее в контейнер
$r_button = &new GtkButton('Retry');
$container->pack_start($r_button);
// создаем еще одну кнопку и добавляем ее в контейнер
$f_button = &new GtkButton('Fail');
$container->pack_start($f_button);
// добавляем контейнер к окну
$window->add($container);
// показываем окно
$window->show_all();
// необходимо обеспечить корректное завершение программы
function shutdown() { gtk::main_quit(); }
$window->connect('destroy','shutdown');
// запускаем цикл, обрабатывающий сигнал GTK
gtk::main();

Обсуждение
Окно представляет собой контейнер, который может содержать только один элемент управления.


Чтобы разместить в окне несколько элементов управления, необходимо поместить все элементы управления в другой контейнер, который может содержать более одного элемента управления, а затем поместить такой контейнер в окно. Этот процесс
может быть вложенным: элементы управления в контейнере и сами могут быть контейнерами.

В приведенном выше решении контейнеры добавляются в контейнер GtkVBox, выравнивающий дочерние элементы управления окном по вертикали. Добавлять элементы управления в GtkVBox можно и при помощи метода add(), но мы вместо него вызовем метод pack_start(), для того чтобы размер контейнера автоматически обновлялся при добавлении каждого нового элемента.

GtkHBox подобен GtkVBox. Он выравнивает свои дочерние элементы управления по горизонтали, а не по вертикали.

Класс GtkTable – это контейнер с более гибкой схемой размещения; он выравнивает свои дочерние элементы по сетке:

// создаем окно
$window = &new GtkWindow();
// создаем контейнер с тремя строками и двумя столбцами
$container = &new GtkTable(3,2);
// создаем текстовый элемент управления и добавляем его в контейнер
$text_entry = &new GtkEntry();
$container->attach($text_entry,0,2,0,1);
// создаем кнопку и добавляем ее в контейнер
$a_button = &new GtkButton('Abort');
$container->attach($a_button,0,1,1,2);
// создаем другую кнопку и добавляем ее в контейнер
$r_button = &new GtkButton('Retry');
$container->attach($r_button,1,2,1,2);
// создаем еще одну кнопку и добавляем ее в контейнер
$f_button = &new GtkButton('Fail');
$container->attach($f_button,0,2,2,3);
// добавляем контейнер к окну
$window->add($container);
// показываем окно
$window->show_all();
// необходимо обеспечить корректное завершение программы
function shutdown() { gtk::main_quit(); }
$window->connect('destroy','shutdown');
// запускаем цикл, обрабатывающий сигнал GTK
gtk::main();

Элементы управления добавляются в контейнер GtkTable с помощью метода attach().


Первый аргумент метода attach() – это добавляемый элемент управления, а следующие четыре описывают расположение элемента в сетке. Второй и третий аргументы – это начальный и конечный столбцы для элемента управления, а четвертый и пятый – это на-
чальная и конечная строки. Например: $container->attach($text_entry,0,2,0,1) означает, что элемент управления для ввода текста начинается в нулевом столбце, а заканчивается во втором, занимая два столбца. При этом он начинается в нулевой строке и заканчивается в первой, занимая только одну строку. Нумерация строк и столбцов начинается с нуля. Текстовый элемент управления и кнопка, выровненные в контей-нере GtkTable..



Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Анализ аргументов программы
Анализ аргументов программы с помощью getopt
Показ в окне графических элементов управления
Показ меню
Программа: Командная оболочка

Вернуться в раздел: PHP / 20. PHP на стороне клиента