2

我正在执行一个 perl 脚本作为其他更大代码的一部分。我的 perl 代码会根据状态值(成功或失败)打开一个弹出窗口。这个问题是,脚本不会继续执行其他部分代码,直到我关闭这个由 perl 创建的弹出窗口。我该如何解决这个问题。请帮忙。我想保持弹出窗口打开并继续执行父脚本的其他部分。我正在使用以下 perl 脚本打开弹出窗口。

#!/usr/local/bin/perl
use Tk;
my $status = shift;
my $opt = shift;
my $mw = MainWindow->new;
$mw->title("DONE");
if($status eq "success") {
  $mw->Label(-text => "$opt dummyFill for 'test1' succeeded",       -background => "green")->pack(-ipadx => 10, -ipady => 10);
    $mw->Button(-text => "Close", -background => "green", -command => sub { exit})->pack(-fill => "x");
} else {
    $mw->Label(-text => "$opt dummyFill for 'test1' FAILED", -background => "red")->pack(-ipadx => 10, -ipady => 10);
    $mw->Button(-text => "Close", -background => "red", -command => sub { exit})->pack(-fill => "x");
}
$mw->geometry("+250+50");
MainLoop;

我感谢您的帮助。

谢谢山姆

4

1 回答 1

2

您的主脚本可能正在等待调用 Perl 的返回。在 Tk Perl 中,您可以调用 TK 特定的退出例程来关闭主窗口,或者直接在主窗口对象上调用 destroy。

解决方案不在此脚本中,而是在调用代码中。调用代码需要将该 Perl 脚本的执行分叉到一个单独的进程或线程中。

于 2017-08-07T17:06:58.900 回答