This example changes the callback associated with a menu item based on the active tab of a Notebook.
use strict; use Tk; use Tk::Notebook; my $main = MainWindow->new; my $menubar = $main->Menu(); # Default is never used my $execute = \&default; $main->configure(-menu => $menubar, ); my $menu = $menubar->cascade(-label => '~File', -menuitems => [ ['command', 'Execute', -command => \$exec +ute], ['command', '~Exit', -command => sub{$main +->destroy}], ] ); my $notebook = $main->NoteBook(); # Execute menu item changes with each tab my $tab1 =$notebook->add("tab1", -label => "Tab 1", -raisecmd => sub{ $execute = \&tab1 }, ); my $tab2 =$notebook->add("tab2", -label => "Tab 2", -raisecmd => sub{ $execute = \&tab2 }, ); $notebook->pack(); MainLoop; sub default{ print "Default\n"; } sub tab1{ print "Tab1\n"; } sub tab2{ print "Tab2\n"; }

Replies are listed 'Best First'.
Re: Tk: Change menu item based on Notebook tab
by aukjan (Friar) on Jun 06, 2005 at 07:03 UTC
    This was just what I was looking for, I am just starting to use Tk, so these tips help alot.
    Just one comment... use Tk::Notebook should be use Tk::NoteBook.

    .:| If it can't be fixed .. Don't break it |:.