Часть 49. Фреймы

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

Object
   +--- Widget
         +--- Container
               +--- Bin
                     +--- Frame
         

Фреймы используют для группировки и выделения нескольких виджетов в одном визуальном контейнере. Можно добавить фрейму подпись, что делает логику группировки элементов более очевидной и облегчает восприятие информации пользователем. Местоположение подписи фрейма и вид бордюра можно изменять.

Создаем фрейм:

$frame = new Gtk::Frame( $label );

Подпись к нему по умолчанию будет распложена в левом верхнем углу. Если $label равен null, то подписи у фрейма не будет. Изменит текст подписи позволяет метод:

$frame->set_label( $label );

А местонахождение подписи меняется методом:

$frame->set_label_align( $xalign, $yalign );

где $xalign и $yalign принимает значения между 0.0 и 1.0. $xalign означает позиции подписи относительно верхней горизонтальной линии фрейма. $yalign пока не поддерживается. По умолчанию $xalign равно 0.0 что, как было замечено, помещает подпись в левый верхний угол.

Следующая функция измения стиля рамки фрейма:

$frame->set_shadow_type( $type );

где $type может принимать одно из следующих значений:

'none'
'in'
'out'
'etched_in' (по умолчанию)
'etched_out'

49.1. Пример использования фрема.

Проилюстрируем использование фреймов.

Исходник

      
#!/usr/bin/perl -w

use 
Gtk
;
use 
strict
;

set_locale Gtk;
init Gtk;


my
 $false = 0;

my
 $true = 1;


my
 $i;


my
 $window;

my
 $frame;

my
 $button;


# Создаем окно
$window = new Gtk::Window( "toplevel" );
$window->set_title( "Frame Example" );
$window->signal_connect( "destroy",

sub
 { Gtk->
exit
( 0 ); } );
$window->set_usize( 300, 300 );
$window->border_width( 10 );

# Создаем фрейм
$frame = new Gtk::Frame();
$window->add( $frame );

# Устанавливаем подпись фрейму
$frame->set_label( "Gtk Frame Widget" );

# Помещаем подпись в правый верхний угол фрейма
$frame->set_label_align( 1.0, 0.0 );

# Меняем стиль рамки
$frame->set_shadow_type( 'etched_out' );

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

main Gtk;

exit
( 0 );



# КОНЕЦ ПРИМЕРА
      
   

Frame Example Screenshot