Несмотря на большое количество модулей в CPAN, дистрибутивов Perl (Strawberry Perl, ActivePerl, MinGW Perl) возникают некоторые неопределенности, одна из них — это выбор графического тулкита для построения GUI (графического интерфейса пользователя). Об этом и пойдет речь.
Лично я остановился на ActivePerl от компании ActiveState. Также для работы применяю Komodo IDE и Perl Dev Kit.
Итак, я выбрал четыре основных модуля для работы с GUI, обеспечивающие кроссплатформенность.
Perl/Tk:
— является интерфейсом к библиотеке Tk. Работает через DynaLoader/XS.
— объектно-ориентированный подход.
— устаревший внешний вид.
— хорошая документация.
— необновлялась с 2007 года.
Пример программы из документации:
Tkx:
— интерфейс к Tk. Используется мост в виде прослойки Tcl.
— более низкая производительность, вызвана нагрузкой второго языка.
— Иной подход к программированию. Вам необходимо знать язык Tcl.
— Можно использовать сторонние пакеты.
— «Родное» оформление.
— является де-факто основной в ActivePerl.
— есть туториалы.
Пример кода:
WxPerl:
— графическая библиотека WxWidgets.
— объектно-ориентированный интерфейс.
— «родное» оформление.
— больший размер файлов.
— сложности при установке.
Gtk:
— использует Glib/Gtk.
— специфичный внешний вид.
— можно использовать темы.
— имеет проблемы при установке.
— проблемы в Windows, OSX.
Пример Helloworld'а
К сожалению установить и запустить это чудо у меня не получилось. ОС: Windows Vista.
Поэтому, приведу официальный скриншот.
Лично я думаю, что самый оптимальный вариант это использовать либо Tk (если оформление не критично), либо Tkx.
Лично я остановился на ActivePerl от компании ActiveState. Также для работы применяю Komodo IDE и Perl Dev Kit.
Итак, я выбрал четыре основных модуля для работы с GUI, обеспечивающие кроссплатформенность.
Perl/Tk:
— является интерфейсом к библиотеке Tk. Работает через DynaLoader/XS.
— объектно-ориентированный подход.
— устаревший внешний вид.
— хорошая документация.
— необновлялась с 2007 года.
Пример программы из документации:
#!/usr/bin/perl -w
use Tk;
use strict;
my $mw = MainWindow->new;
$mw->Label(-text => 'Hello, world!')->pack;
$mw->Button(
-text => 'Quit',
-command => sub { exit },
)->pack;
MainLoop;
Tkx:
— интерфейс к Tk. Используется мост в виде прослойки Tcl.
— более низкая производительность, вызвана нагрузкой второго языка.
— Иной подход к программированию. Вам необходимо знать язык Tcl.
— Можно использовать сторонние пакеты.
— «Родное» оформление.
— является де-факто основной в ActivePerl.
— есть туториалы.
Пример кода:
use Tkx;
my $mw = Tkx::widget->new(".");
$mw->new_ttk__button(
-text => "Hello, world",
-command => sub { $mw->g_destroy; },
)->g_pack;
Tkx::MainLoop();
WxPerl:
— графическая библиотека WxWidgets.
— объектно-ориентированный интерфейс.
— «родное» оформление.
— больший размер файлов.
— сложности при установке.
use Wx;
my $app = Wx::SimpleApp->new;
my $frame = Wx::Frame->new( undef, -1, 'Hello, world!' );
$frame->Show;
$app->MainLoop;
Gtk:
— использует Glib/Gtk.
— специфичный внешний вид.
— можно использовать темы.
— имеет проблемы при установке.
— проблемы в Windows, OSX.
Пример Helloworld'а
use Gtk2 -init;
my $window = Gtk2::Window->new ('toplevel');
my $button = Gtk2::Button->new ('Hello world');
$button->signal_connect (clicked => sub { Gtk2->main_quit });
$window->add ($button);
$window->show_all;
Gtk2->main;
К сожалению установить и запустить это чудо у меня не получилось. ОС: Windows Vista.
Поэтому, приведу официальный скриншот.
Лично я думаю, что самый оптимальный вариант это использовать либо Tk (если оформление не критично), либо Tkx.