Эта статья описывает создание кроссплатформенных GUI приложений на Perl с использованием модуля Tk (произносится "тикей"). Tk - инструмент для разработки приложений с графическим интерфейсом, первоначально был создан для использования с другим языком программирования - Tcl, но позднее был успешно реализован и для Perl и для
Python. Perl/Tk является прекрасным средством для быстрого создания кроссплатформенных GUI-приложений на Perl для Linux, UNIX и Windows.

Получение и установка

Perl/Tk прекрасно работает как на Windows, так и на Linux и остальных UNIX. Если вы используете ActivePerl, то Perl/Tk уже установлен.
Пользователям Linux/UNIX нужно скачать и скомпилировать исходные коды
Perl/Tk, стащить их можно отсюда. Установка
Perl/Tk в принципе не особо отличается от процедуры установки обычного модуля для Перл:

Perl Makefile.PL
make
make install

Perl/Tk скриптинг - основы

Сначала создается главное окно приложения: 

$main = MainWindow -> New ();

После этого создаются остальные элементы управления такой конструкцией:

$child = $parent -> ChildType (parameters);

Пример:

#! /usr/bin/perl

use Tk;

$main = MainWindow -> new();
$button = $main->Button(-text => "This is Perl/Tk", -command => sub{exit});
$button -> pack(); # делаем кнопку видимой
MainLoop(); #включаем обработку событий

Чтобы создать элемент управления нужно вызвать функцию с именем, соответствующим имени компонента. Так, в примере выше была вызвана функция Button() для создания элемента управления Button.

Некоторые элементы управления доступные в
Tk:

  • BrowseEntry - выпадающий список
  • Button - кнопка
  • Canvas - холст
  • Checkbutton - переключатель
  • Entry - ввод текста
  • Label - статический текст
  • Listbox - список
  • MainWindow - главное окно
  • Menu - меню
  • Message - многострочный статический текст
  • Radiobutton - переключатель
  • Scrollbar - полоса прокрутки
  • Text - многострочный ввод текста
  • TextUndo - многострочный ввод текста с возможностью отмены действий

Остальные доступные контролы + возможные свойства каждого можно посмотреть в документации, поставляемой с Perl/Tk. 

Обычно элемент управления (потомок) создаётся вызовом соответствующего метода родителя, как в первом примере. Так, чтобы создать чекбокс:

$checkbutton = $main -> Checkbutton ( -text => "Просто переключатель");

Perl/Tk скрипты - событийно-управляемы, функция Tk::MainLoop включает обработку событий.

Изменение свойств компонентов

Свойства изменяются путем вызова функции configure, например:

$checkbutton -> configure ( -foreground => "red" ); 

Этот вызов configure установит красный цвет текста чекбокса. В UNIX и Linux список доступных имён цветов хранится в /usr/lib/X11/rgb.txt.

Некоторые свойства компонентов:

  • activebackground - цвет фона активного компонента
  • activeborderwidth - толщина границы активного компонента
  • activeforeground - цвет текста активного компонента, 
  • bg - цвет фона компонента
  • bd - толщина границы компонента
  • font - шрифт
  • fg - цвет текста компонента
  • image - картинка, отображаемая на компоненте
  • relief - 3D вид компонента
  • text - надпись на компоненте

Много из свойств контролируют контрол, когда он активен, т.е. когда курсор мыши находится над ним. Эти активные свойства можно отключить, установив значение переменной $Tk::strictMotif единицей (1).

#! /usr/bin/perl

use Tk;
$Tk::strictMotif = 1;

$main = MainWindow -> new();

$cmdExit = $main -> Button ( -text => "Exit", -command => \&cmdExit_Click, -fg => "blue" );
$cmdExit -> pack();

#изменяем свойство
$cmdExit -> configure ( -background => "white");

$cmdClick = $main -> Button ( -text => "Click!", -command => \&cmdClick_Click, -fg => "black", -bg => "steelblue");
$cmdClick -> pack();

MainLoop();

sub cmdExit_Click {
print "Exit button was pushed\n";
exit;
}

sub cmdClick_Click {
$cmdClick -> configure ( -background => "grey", -foreground => "black", -font => "arial" );
}

Из этого примера можно увидеть, как в Perl/Tk назначаются обработчики событий - через свойство
-command. 

Во второй части документа будет подробно рассказано о том, как контролировать внешний вид элементов управления, их расположение (использование "сетки"), и еще много чего :). Скоро будет-с. 

Примеры брать вот здесь.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии