Previous Geometry Managers |
Perl/Tk Tutorial Some Tk Commands |
Next What Now? |
bind
The bind command associates Perl code with events. If you want to do something when the user double-clicks
a item in a listbox or when he/she press any button(say F1), bind is what you need. Lets bind something
in the next example.
Syntax:
$widget -> bind(<sequence>, Callback);
<sequence> stands for the sequence of button/mouse presses. It should be given in the following pattern...
<modifier-modifier-type-detail> . For example...
<Control-Alt-Key-t> - Control+Alt+T.
Control and Alt are the modifiers and Key is the type with
t as the detail. See the next example and you will understand.
#!/usr/local/bin/perl use Tk; # Main Window my $mw = new MainWindow; my $lab = $mw -> Label(-text=> " The Bind command ", -font=>"ansi 12 bold") -> pack; my $lst = $mw -> Listbox() -> pack; $lst -> insert('end',"Don't double-click this."); $lst -> insert('end',"Don't double-click this either."); $lst -> insert('end',"Don't even think of double-clicking this."); $lst -> insert('end',"You may double-click this."); $lst -> insert('end',"No. Negative. Nay. Nope. Get the message?"); #Bind the double click event to the list box $lst -> bind ('<Double-ButtonPress-1>', sub { double() }); my $all_keys = $mw -> Label(-justify=>"left", -text=>"Press any of the following... Control+A Control+Shift+A Control+Alt+T Right click Control+Escape") -> pack; #Exit when the escape key is pressed $mw -> bind('<Key-Escape>', sub { exit }); #Shows a helping dialog box when F1 is pressed $mw -> bind('<Key-F1>',sub { help(); }); #Binds misc keys. $mw -> bind('<Control-Key-a>', sub { $mw -> messageBox(-message=>"You pressed Control+A, did'nt you?") });#Control+A $mw -> bind('<Control-Key-A>', sub { $mw -> messageBox(-message => "Control+Shift+A, right?"); });#Control+Shift+A $mw -> bind('<Control-Alt-Key-t>', sub { $mw -> messageBox(-message => "Control, Alt and T"); });#Control+Alt+T $mw -> bind('<ButtonPress-3>', sub { $mw -> messageBox(-message => "The right way to click."); });#Right click $mw -> bind('<Control-Key-Escape>', sub { $mw -> messageBox(-message => "You must be a married man. What you pressed remindes married men of what they never will have - Control or Escape."); });#Control+Escape MainLoop; #The helping function sub help { $mw -> messageBox(-message=>"Did you ask of help? You ain't getting any. Ha Ha Ha!"); } #This happens at double-click sub double { $mw -> messageBox(-message=>"You double clicked something. This script is simple - so it won't display what you clicked on. But if you want a sript that is able to do that, write to me at binnyva\(at\)hotmail\(dot\)com and I will send you a better script."); }
Previous Geometry Managers |
Contents | Next What Now? |