0

那里有很多 tk 的东西,但似乎都不是我想要它做的那样......下面的 CreateOk 将创建一个消息框(没有另一个主窗口)并在按下 ok 时返回结果。我想创建一个行为类似于 ok 框的框,但提示用户输入文本并在单击提交按钮时返回文本。我还在下面发布了我的尝试。

sub CreateOk
{
   my ($statement, $title) = @_;
   my $return;

   if (defined($statement))
   {
      my $main_window = MainWindow->new();
      $main_window->withdraw();

      $return = $main_window->messageBox(
         -title   => $title // 'Ok pop-up',
         -message => $statement,
         -type    => 'OK',
         -icon    => 'question',
      );
   }
   else
   {
      cluck "No message given for OK pop-up!";
   }

   return($return);
}

这是我的尝试

sub CreatePrompt
{
   my ($question, $title) = @_;
   my $pop_up;

   if (defined($question))
   {
      my $main_window = MainWindow->new();

      my $winMain = MainWindow->new(
         -title => $title // 'User Input',
      );
      $winMain->Label(
         -text => $question
      )->pack( -side => 'left' );

      my $entName = $winMain->Entry(
         -textvariable => \$pop_up
      );
      $entName->pack( -side => 'left' );
      $winMain->Button(
         -text    => 'Show',
         -command => sub{ close; }
      )->pack( -side => 'left' );

      MainLoop();
   }
}

但这将创建主窗口和弹出窗口,我该如何像以前一样创建弹出窗口?

4

1 回答 1

0

为什么不使用 MessageBox 和 DialogBox?

https://metacpan.org/pod/distribution/Tk/pod/messageBox.pod

https://metacpan.org/pod/distribution/Tk/pod/DialogBox.pod

于 2013-07-04T13:14:16.270 回答