Эта статья описывает создание кроссплатформенных 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. 

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

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

Оставить мнение

Check Also

Что можно сделать с iPhone, зная пасскод. Как сливают данные, уводят iCloud и блокируют остальные устройства

Последние несколько месяцев мы много писали о нововведениях в iOS 11. «Теперь-то заживем!»…