2013-07-03 3 views
0

Существует много материалов tk, но ничто из этого не похоже на то, что я хочу сделать ... CreateOk ниже создаст окно сообщения (без другого основного окно) и вернуть результат при нажатии ok. Я хотел бы создать поле, которое ведет себя как поле ok, но запрашивает у пользователя ввод текста и возвращает текст при нажатии кнопки отправки. Я также опубликовал свою попытку ниже.Как создать подсказку с помощью Perl :: tk

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(); 
    } 
} 

Но это создаст главное окно и всплывающее окно, как я просто создать всплывающее окно, как и раньше?

+0

Почему вы создаете '$ main_window' на всех, если вы не используете? –

ответ

Смежные вопросы