Какие хорошие интерактивные пакеты GUI для Perl? - PullRequest
10 голосов
/ 30 марта 2009

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

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

Ответы [ 11 ]

13 голосов
/ 30 марта 2009

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

Сначала я неправильно понял вопрос. Я думал, что вам нужен редактор GUI для создания GUI (вот что такое 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;
11 голосов
/ 30 марта 2009

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

С веб-сайта:

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

6 голосов
/ 30 марта 2009

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

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

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

4 голосов
/ 30 марта 2009

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

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

4 голосов
/ 30 марта 2009

Конструктор графического интерфейса для WxPerl будет wxGlade или wxFormBuilder , оба с открытым исходным кодом.

3 голосов
/ 07 сентября 2012

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

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

2 голосов
/ 07 сентября 2012

Что касается качества виджетов, то все три 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: Perl-qt4 может не работать, если рабочие столы не kde. Я попытался запустить все в Ubuntu и Sabayon и обнаружил, что perl-gtk2 и даже wxperl (и также wxruby) работает нормально, тогда как я не могу запустить даже одну программу perl-qt4 в gnome-desktop, где я установил полную поддержку qt4 без кде.

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

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

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

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

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

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

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

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

1 голос
/ 09 мая 2009

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

Руководство по PerlQt Wiki

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

1 голос
/ 30 марта 2009

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

0 голосов
/ 20 января 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...