I believe <Return> may be the default action, where <Space> is what you need to 
press to get the right action. You’ll see OS X behave the same way with its 
core ok/cancel boxes.

> On Jun 14, 2016, at 10:29 AM, Philip Brady <phil.br...@hotmail.co.uk> wrote:
> 
> 
> I'm writing a perl script using Tk and have had some success but I wish to 
> have a very simple subroutine to ask the user a question and get a response 
> 'ok' or 'cancel'. 
> 
> My routine follows but it doesn't quite work as expected.
> It's fine if I mouse click on 'ok' or simply press the return key - it 
> correctly returns 'ok'.
> If I clink 'cancel' it correctly returns 'cancel'.
> 
> Unfortunately, if I tab to 'cancel' then press return it returns 'ok' rather 
> than the desired 'cancel'.
> 
> I'd appreciate any advice on fixing this.
> regards
> Phil
> 
> 
> The code is:
> 
> #!/usr/bin/perl -w
> use strict;
> use Tk;
> use Tk::Dialog;
> use Tk::DialogBox;
> 
> 
> my $main=MainWindow->new();
> my $X=CheckOk('Some old question');
> print "Response was $X\n";
> 
> exit 0;
> 
> 
> sub CheckOk{
>     (my $question)=@_;
>     my $box=$main->DialogBox(
>         -buttons => ['ok','cancel'],
>         -default_button => "ok");
>     $box-> add("Label",
>                 -text => "$question   ")->pack;
>     $box -> Show();
> }

Reply via email to