in reply to Tk: listen for event generated anywhere in program
From the Tk bind documentation :
...$widget->bind(tag,sequence,callback);
...If a tag is the name of an internal window the binding applies to that window.
If the tag is the name of a toplevel window the binding applies to the toplevel window and all its internal windows.
If the tag is the name of a class of widgets, such as Tk::Button, the binding applies to all widgets in that class;
If tag has the value all, the binding applies to all windows in the application.
So just use the first argument of the bind call :
#!/usr/bin/perl use Tk; use strict; my $app = new MainWindow; my $entry = $app->Entry()->pack(); $entry->bind('all', '<<customEvent>>' => \&respondToEvent); $app->Button(-text => 'gen event by app', -command => [\&sendEvent, 0])->pack(); $app->Button(-text => 'gen event by label', -command => [\&sendEvent, 1])->pack(); MainLoop; sub sendEvent { if(@_[0]) { # have entry generate event - this works $entry->eventGenerate('<<customEvent>>'); } else { # have mainwindow generate event - this produces nill $app->eventGenerate('<<customEvent>>'); } } sub respondToEvent { print "Responding to Event!"; }
100th post ! Champaign !
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: Tk: listen for event generated anywhere in program
by blueberryCoffee (Scribe) on Dec 14, 2004 at 10:12 UTC |