Как я могу показать вывод консоли Perl в GUI?

Это должно работать с большей частью VCS (в зависимости от других критериев, Вы могли бы выбрать SVN, CVS, Darcs, TFS, и т.д.), однако это будет на самом деле полный файл (потому что это - двоичный формат), означая, что, "на что измененный" вопрос не так легок ответить.

можно все еще полагаться на сообщения журнала , если люди завершают их, но Вы могли бы также попробовать базирующиеся форматы нового XML от Office 2007 для получения еще некоторой видимости (хотя это все еще будет твердо к сорняку через тонны XML плюс AFAIK, XML-файл заархивирован на диске, таким образом, Вам был бы нужен рычаг перед фиксацией для разархивации его для текстовой разности для работы правильно).

8
задан Jazz 6 April 2017 в 22:25
поделиться

4 ответа

You can use any GUI option you like, and then you could use Tie::STDOUT to redefine the behavior of print and printf to the STDOUT filehandle to instead dump output into the widget of your choice. The only thing is that getting it to talk to your widgets across packages cleanly using the anonymous sub might be messy. Here's a short, crude example using Win32::GUI:

use Win32::GUI();
use Tie::STDOUT 
    print => sub {
        $main::textfield->Append(@_);
    };

my $main = Win32::GUI::Window->new(
        -name => 'Main',
        -text => 'Perl',
        -width => 220,
        -height => 230,
    );
our $textfield = $main->AddTextfield(
        -name   => "Output",
        -left   => 8,
        -top    => 8,
        -width  => 180,
        -height => 180,
        -readonly => 1,
        -multiline => 1,
        -vscroll => 1,
    );
$main->Show();
sub Main_Terminate {
        -1;
}


if(!fork()) {
    print "Hello.\n";
    for (1..20) {
      sleep 1;
      printf "More output %d\n", $_;
    }
} else {
    Win32::GUI::Dialog();
}

Note the call to Win32::GUI::Dialog() at the end is present to keep the window from closing as soon as the script is finished.

10
ответ дан 5 December 2019 в 08:24
поделиться

From a quick search you do have a few options:

  1. Perl with NCurses (its a GUI, but it keeps it in the console)
  2. Perl with wxWindows wxPerl
  3. PerlTK
  4. GTK with Perl (see the wikibooks reference)

Also, there is a wikibooks reference for this.

5
ответ дан 5 December 2019 в 08:24
поделиться

Если на вашем компьютере установлен Firefox, я Мы работали над модулем XUL :: Gui , который позволяет отображать графический интерфейс Perl с помощью движка рендеринга Firefox. Основываясь на ответе Адама:

use XUL::Gui;
use Tie::STDOUT 
    print => sub {$ID{text}->value .= join '' => @_};

display Window title=>'Perl', minwidth=>640, minheight=>480,
    TextBox( FILL SCROLL id=>'text', multiline=>'true' ),
    delay {
        print "hello world\n";  # Output goes to the window.
        for (1..5) {
            printf "More output %d\n", $_;
        }
    };

Изменить: исправлена ​​ошибка с многострочными возвращаемыми значениями из графического интерфейса, пример выше теперь лучше. работает с XUL :: Gui 0.35+

4
ответ дан 5 December 2019 в 08:24
поделиться

wxWidgets using Wx CPAN module is popular in Perl world right now (see Padre)

However I'm not sure this comes with ActivePerl which I believe may come with Tk instead.

/I3az/

1
ответ дан 5 December 2019 в 08:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: