如何在GUI中显示Perl控制台输出?

Jaz*_*azz 8 windows console perl

我有几个简单的Perl程序写入标准输出,但这有一些问题:

  • 我的一些用户被控制台吓坏了
  • 我的用户在Windows上工作,所以我的程序输出显示在cmd控制台上,所以我无法控制它的显示方式(颜色和终端大小),更糟糕的是,控制台无法调整大小(至少在宽度上)

为了解决这些问题,我希望能够在一个简单的GUI界面中显示输出作为选项.GUI应该响应直到程序结束(应该可以在窗口运行时滚动或调整窗口大小).

我可以使用什么简单的工具包和小部件来执行此操作?(我使用ActivePerl在Windows上开发).

Ada*_*ire 10

您可以使用任何您喜欢的GUI选项,然后您可以使用Tie :: STDOUT重新定义STDOUT文件句柄的行为,printprintf不是将输出转储到您选择的小部件中.唯一的事情就是让它使用匿名子程序干净地与你的小部件交谈可能会很麻烦.这是一个使用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();
}
Run Code Online (Sandbox Code Playgroud)

请注意,最后的调用是为了Win32::GUI::Dialog()在脚本完成后立即关闭窗口.


mon*_*ksy 5

通过快速搜索,您可以选择以下几种方法:

  1. 带有NCurses的Perl(它是一个GUI,但它将它保存在控制台中)
  2. Perl与wxWindows wxPerl
  3. PerlTK
  4. 带Perl的GTK(参见wikibooks参考)

此外,还有一个wikibooks参考.