Каковы хорошие интерактивные графические пакеты 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 тоже.