The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Каталог документации / Раздел "Perl" / Оглавление документа

Таблицы

Иерархия наследования

Object
   +--- Widget
         +--- Container
               +--- Table

Создать таблицу можно так:

$table = new Gtk::Table($num_rows,$num_columns,$homogeneous);

где первый аргумент - число строк, а второй - число столбцов. Аргумент $homogeneous показывает, как будут меняться размеры ячеек таблицы в зависимости от размера элементов таблицы в этой ячейке. Если эта переменная true то размер ячейки таблицы подстраивается под размер самого большого элемента в таблице. Если значение переменной $homogeneous=false то размер ячейки подстраивается под максимальный размер элемента в строке и столбце. Нуумерация строк и столбцов таблицы начинается с 0.

Помещение виджетов в таблицу.

Для помещения виджета в таблицу используют следующую функцию:

$table->attach( $child, $left_attach, $right_attach,
                $top_attach, $bottom_attach, $xoptions,
                $yoptions, $xpadding, $ypadding );

В левой части запроса - создаваемый потомок, который является первым аргументом. Второй и третий аргументы определяют, где разместить виджет и как много ячеек надо использовать. Если есть желание поместить кнопку внизу таблицы 2х2 и чтобы заполнение было только данную ячейку, то необходимо присвоить переменным следующие значения: $left_attach=1, $right_attach=2, $top_attach=1, $bottom_attach=2. Если нужно чтобы виджет располагался на верхней строке, то переменные должны быть такими: $left_attach = 0, $right_attach = 2, $top_attach = 0, $bottom_attach = 1.

Переменные $xoptions и $yoptions используются для специальных настроек и могут быть составными:

fill - если ячейка больше чем виджет, и 'fill' определен, то виджет будет расширен, чтобы использовать все имеющееся место. shrink - если виджет(таблица, всякий элемент можно назвать виджетом) был размещен на меньшем месте, чем ему требуется(обычно в том случае, когда пользователь изменяет размер окна), то виджет исчезнет. expand - расширяет таблицу, чтобы использовать все место.

Чтобы определить эти опции, необходимо вставить их в кавычки: 'option' или для совместного использования ['option1', 'option2']. Подобно боксам, сожно создать обрамление, указав его размер в пикселах. Модификация функции attach() - attach_defaults(), которая позволяет не учитывать х и у и расположение. Х и Y опции установлены по умолчанию в ['fill', 'expand'] и X и Y установлены в 0.

Размер таблицы и интервалы

Функции set_row_spacing() и set_col_spacing() устанавливают интервал между строками/столбцами в указанной строке или столбце:

$table->set_row_spacing( $row, $spacing ); 

$table->set_col_spacing( $column, $spacing );

для столбцов дополнение идет справа, для строк дополнение сверху(? проверить). Можно установить последовательные интервалы для всех строк и/или столбцов, используя

$table->set_row_spacing( $row, $spacing ); 

$table->set_col_spacing( $column, $spacing );

Если необходимо изменить таблицу после её создания, то можно воспользоваться функцией

$table->resize( $rows, $columns );

Если надо все по дефолту, то пишем

$table->set_homogeneous( $homogeneous ); 

(тут вставить картинку с таблицей) Программа, рисующая эту картинку:

#!/usr/bin/perl -w

use Gtk;
use strict;

set_locale Gtk;
init Gtk;

my $false = 0;
my $true = 1;

my $window;
my $button;
my $table;

# Create the window
$window = new Gtk::Window( "toplevel" );
$window->signal_connect( "delete_event", sub { Gtk->exit( 0 ); } );
$window->title( "Table" );
$window->border_width( 20 );

# Create a 2x2 table
$table = new Gtk::Table( 2, 2, $true );
$window->add( $table );

# создать кнопку
$button = new Gtk::Button( "button 1" );
$button->signal_connect( "clicked", \&ButtonClicked, "button 1" );

# вставить первую кнопку в верхнюу левую ячейку таблицы
$table->attach_defaults( $button, 0, 1, 0, 1 );
$button->show();

# создать вторую кнопку
$button = new Gtk::Button( "button 2" );
$button->signal_connect( "clicked", \&ButtonClicked, "button 2" );

# вставить вторую кнопку в верхнюу правую ячейку таблицы
$table->attach_defaults( $button, 1, 2, 0, 1 );
$button->show();

$button = new Gtk::Button( "Quit" );
$button->signal_connect( "clicked", sub { Gtk->exit( 0 ); } );

# вставить кнопку выхода в нижнюю ячейку таблицы
$table->attach_defaults( $button, 0, 2, 1, 2 );
$button->show();

$table->show();
$window->show();

main Gtk;
exit( 0 );

sub ButtonClicked{
   my ( $button, $text ) = @_;
   print( "Hello again $text was pressed\n" );
}




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2020 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру