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