use strict; use warnings; use Tk; use Tk::NoteBook; # Main Entry my $top = MainWindow->new(); $top->title("Test"); my $nb = $top->NoteBook()->pack(-expand => 1, -fill => 'both'); InitializeNoteBookPage($nb->add('page1', -label => 'Page 1'), "Label for Page 1"); InitializeNoteBookPage($nb->add('page2', -label => 'Page 2'), "Label for Page 2"); Tk::MainLoop(); # Subroutines start here sub InitializeNoteBookPage{ my($nbpage, $label_description) = @_; # Widget Initialization my($_label_1) = $nbpage->Label( -text => $label_description, ); my($_entry_1) = $nbpage->Entry( -width => 0, ); # Geometry Management $_label_1->grid( -in => $nbpage, -column => 1, -row => 1, -columnspan => 1, -ipadx => 0, -ipady => 0, -padx => 0, -pady => 0, -rowspan => 1, -sticky => "" ); $_entry_1->grid( -in => $nbpage, -column => 2, -row => 1, -columnspan => 1, -ipadx => 0, -ipady => 0, -padx => 0, -pady => 0, -rowspan => 1, -sticky => "ew" ); # Resize Behavior $nbpage->gridRowconfigure (1, -weight => 0, -minsize => 50, -pad => 0); $nbpage->gridColumnconfigure(1, -weight => 0, -minsize => 400, -pad => 0); $nbpage->gridColumnconfigure(2, -weight => 0, -minsize => 400, -pad => 0); # Event callbacks $_entry_1->bind("", sub { print $nbpage->name()." ".$_entry_1->name()." KeyRelease fired\n"; } ); $nb->pageconfigure($nbpage->name(), -raisecmd => sub { print "\n".$nbpage->name()." raised \n"; print "Going to fire ".$nbpage->name()." ".$_entry_1->name()."KeyRelease\n"; $_entry_1->focus(); # If this line is commented out, no event will be fired at all ?! $_entry_1->eventGenerate(""); print "Any thing happened ?\n"; } ); } #### page1 raised Going to fire page1 entryKeyRelease Any thing happened ? page2 raised Going to fire page2 entryKeyRelease Any thing happened ? page1 raised Going to fire page1 entryKeyRelease page2 entry KeyRelease fired Any thing happened ? page2 raised Going to fire page2 entryKeyRelease page1 entry KeyRelease fired Any thing happened ? page1 raised <--- using "Tab" + "LeftRight" + "Space" Going to fire page1 entryKeyRelease Any thing happened ? page1 entry KeyRelease fired