Каковы хорошие интерактивные графические пакеты GUI для Perl?

Я хотел бы написать некоторые интерактивные графические интерфейсы в Perl. Я использовал TclTk, но он выглядит устаревшим. Я написал код QT для С++, но модуль PerlTk не выпускал через несколько лет. Я вижу другие возможные варианты.

Каковы хорошие пакеты для этого, включая базовое оконное меню, меню, холст для рисования, полосы прокрутки и т.д.

Ответ 1

Gtk2 имеет glade2, который может выписывать XML файл можно использовать Gtk2:: GladeXML. Ниже приведен пример того, как связать XML с приложением в том же файле.

Сначала я неправильно понял вопрос. Я думал, что вам нужен графический редактор для создания графических интерфейсов (что и есть glade2). Вы также можете создавать графические интерфейсы с использованием Gtk2 без glade2:

#!/usr/bin/perl

use strict;
use warnings;
use Gtk2;

Gtk2->init;

my $window = Gtk2::Window->new;
my $vbox   = Gtk2::VBox->new;
my $label  = Gtk2::Label->new("Hello World");
my $button = Gtk2::Button->new("Press me");

$window->add($vbox);
$vbox->add($label);
$vbox->add($button);

$window->set_default_size(200, 200);
$window->signal_connect(
    destroy => sub {
        Gtk2->main_quit;
    }
);

my $i = 0;
$button->signal_connect(
    clicked => sub {
        $label->set_text("button pressed " . ++$i . " times");
    }
);

$window->show_all;

Gtk2->main;

Ответ 2

Попробуйте wxPerl!

На веб-сайте:

wxPerl - это модуль расширения, позволяющий создание графического интерфейса пользователя (графический пользователь Интерфейс) от Perl; он построен как оболочка для awesome wxWidgets С++ GUI toolkit.

Ответ 3

Повторяя Chas Owens, поляну вполне можно использовать с Gtk2 в Perl. Кроме того, Gtk2 также поддерживает файлы GtkBuilder (которые вы также можете создать последнюю поляну).

Основная проблема с wxPerl (и wxWidgets сама) заключается в том, что он не позволяет устанавливать наблюдателей событий файлов в свой основной цикл (он имеет только графические интерфейсы, события Socket и Timer), в отличие от Tk и Gtk.

Циклы событий Qt, Tk и Gtk2 могут использоваться в Perl с AnyEvent, а Gtk2 можно подключить к приложениям, использующим Mainlop Event или Ev с модулями Glib:: Event и Glib:: EV.

Ответ 4

Создатель GUI для WxPerl будет wxGlade или wxFormBuilder, оба с открытым исходным кодом.

Ответ 5

Я бы, вероятно, использовал Gtk2, но Tk определенно не мертв. Отсутствие выпусков связано с тем, что ошибки были устранены на протяжении многих лет. Многие люди все еще используют его, и он работает нормально. (Цикл событий Tk несколько глупый, но это детали, которые, вероятно, не должны вас беспокоить). Единственный недостаток заключается в том, что ваш графический интерфейс выглядит так, как будто это с 1996 года, но кому это нужно?

(Инструмент gitk, включенный в git, показал, что Tk GUI выглядят прекрасно, если они полезны.)

Ответ 6

В отношении качества виджетов все три gtk2, wx и qt4 одинаково хороши - gtk2 является самым быстрым, qt4 имеет наилучшее разрешение, тогда как wx находится где-то между двумя в терминах обоих параметров.

Но tk стоит за всеми тремя с точки зрения скорости и разрешения, но остается во-первых, потому что это оригинальный виджет для всех интерпретируемых языков на основе unix, а во-вторых, потому что он является родным виджетами freebsd.

Как и сегодня в случае perl, документация perl-gtk2 немного более развита, чем perl-qt4, которая, в свою очередь, более развита, чем wxperl. Фактически, если вы просматриваете веб-страницы, вы обнаружите, что учебники для perl-gtk2 более доступны, чем даже pygtk (который также очень хорошо установлен) и ruby-gtk2. В случае python документация wxpython приводит к PyQt и pygtk, тогда как в случае ruby ​​ruby-qt4 приводит к ruby-gtk2 и wxruby. Однако другие развиваются очень быстро (например, ruby-gtk2), и через некоторое время все девять будут равны во всех аспектах.

Проблема perl-qt4 заключается в следующем: в случае настольных компьютеров, отличных от kde, perl-qt4 может не работать. Я попытался запустить все в ubuntu и sabayon и обнаружил, что perl-gtk2 и даже wxperl (и wxruby) работают нормально, тогда как я не могу запускать даже одну программу perl-qt4 в gnome-desktop, где я установил полную поддержку qt4 без kde.

perl-qt4 запрашивает установку не только qt4-библиотек, но и kde-desktop-библиотек. Эта проблема однозначно специфична perl-qt4, не существует в случае PyQt и rubyqt4, так как они оба отлично работают с qt4 runtime под gnome.

Следовательно, таким образом, восемь (плюс три tk) из девяти вариантов сделали хорошо (я еще не тестировал PySide).

В случае perl-tk виджет хорошо развит и установлен, и в отличие от tkinter, pmw и rubytk, его документация является лучшей среди всех упомянутых выше.

Но, может быть, через некоторое время все документы станут развитыми, и любой станет одинаково хорошим.

После того, как вы берете баланс между скоростью, ясностью и кросс-платформой, выберите perl-gtk2 или perl-qt4 или wxperl.

perl-tk, perl-gtk2 и perl-qt4 синтаксис хорошо сочетаются с синтаксисом языка программирования perl, тогда как синтаксис wxperl больше похож на правильный С++, смешанный с perl, который отличается от соответствующего синтаксиса языка (как и в случае wxpython и wxruby).

Но если вы уже помните, что код wx уникален, вы можете сразу начать с wxperl.

В противном случае лучший выход: начать с perl-tk, затем переключиться на perl-gtk2, затем perl-qt4 или wxperl, но убедитесь, что вы изучаете все четыре, а не только одну (такая же последовательность должна также применяться к python и ruby, несмотря на то, что поддержка документации обратная, но в случае perl даже для этого аспекта это тоже самое).

Ответ 7

Недавно мне стало известно о другом наборе инструментов GUI для Perl, который называется Prima. Его утверждение о славе заключается в том, что он был написан на C специально для Perl, а не для порта TCL или привязок к чему-то еще. Предполагая, что у вас есть несколько стандартных библиотек в вашей системе, он будет устанавливаться непосредственно из CPAN и его кросс-платформенного!

Дэвид Мертенс пишет новую графическую библиотеку для PDL, используя REPL тоже!

Ответ 8

У меня нет реального ответа для вас, но часто вам приходится учитывать ваши цели развертывания. Некоторые библиотеки GUI очень приятные, но только если вы можете заставить их работать в вашей операционной системе. Я не обязательно считаю, что все фреймворки должны быть кросс-платформенной совместимостью, очень похвальной целью работать в совершенном мире, пока тот, кого вы выберете, не блокирует значительную часть ваших пользователей, потому что фундамент Библиотеки графических интерфейсов трудно установить или поддерживать на определенной платформе.

Ответ 9

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

Учебник по PerlQt Wiki

PerlQt - это очень быстрый и простой способ создания великолепно выглядящих графических программ с использованием конструктора форм перетаскивания Qt и Perl. PerlQt достаточно мощный для продвинутых разработчиков и легко для начинающих.

Ответ 10

Решение, с которым я иду, это Gtk-Perl. Сначала мне было сложно установить его, но в конце я нашел Camelbox Perl + Gtk2 в одном пакете.

Ответ 11

Я использовал Tk, но в последние несколько дней я играл с Continuity (запись CPAN), веб-приложение/сервер с состоянием (постоянное состояние для каждого пользователя), и это может быть просто возможностью добавить в приложение функции "GUI", он многопользовательский и портативный одновременно.

Edit: В то время, когда я это написал, меня больше всего интересовал тот факт, что у Continuity был свой собственный встроенный веб-сервер. Это относится и к другим webframework для Perl. Я использую Mojolicious, хотя я слышу хорошие вещи о Dancer тоже.