Часть 51. Фиксированный объект

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

Object
   +--- Widget
         +--- Container
               +--- Fixed
         

Фиксированный объект позволяет Вам помещать виджеты в пределах созданной панели. Положение виджетов также может быть изменено динамически.

Есть только три функции связанные с неподвижным виджетом:

$fixed = new Gtk::Fixed();

$fixed->put( $widget, $x, $y );

$fixed->move( $widget, $x, $y );

Функция new() позволяет вам создать новый фиксированный объект.

Функция put() помещает $widget в "неподвижное" положение, определяемое координатами $x и $y.

Функция move() двигает виджет на новую позицию.

51.1. Пример

Этот пример иллюстрирует использование объекта фиксированного положения.

исходник (wake up, Neo...)

#!/usr/bin/perl -w use Gtk ; use strict ; set_locale Gtk; init Gtk; my $false = 0; my $true = 1; my $x = 50; my $y = 50; my $window; my $fixed; my $button; # Создаем новую панель $window = new Gtk::Window( "toplevel" ); $window->set_title( "Фиксированный объект"); $window->signal_connect( "destroy", sub { Gtk-> exit ( 0 ); } ); # Ширина границы панели $window->border_width( 10 ); # Создаем фиксированный объект $fixed = new Gtk::Fixed(); $window->add( $fixed ); $fixed->show(); for my $i ( 1..3 ) { # Создаем кнопку с надписью "Поехали!! " $button = new Gtk::Button( "Поехали!! " ); # когда кнопка испустит сигнал нажато # будет вызвана функция move_button() возвращающая координаты новой кнопки # в соответствии с параметрами фиксированного объекта. $button->signal_connect( "clicked", \&move_button, $fixed ); # добавляем кнопку в панель, где определен фиксированный объект. $fixed->put( $button, $i * 50, $i * 50 ); # Показываем результат. $button->show(); } # Показываем всю панель $window->show(); main Gtk; exit ( 0 ); ### подпрограммы # Вызов этой функции передвигает кнопку на новое место # внутри фиксированного объекта. sub move_button { my ( $widget, $fixed ) = @_; $x = ( $x + 30 ) % 300; $y = ( $y + 50 ) % 300; $fixed->move( $widget, $x, $y ); } # конец примера

Пример работы программы