There are a number of tasks that can be accomplished with perl/Tk widgets, configurations, and bindings (a few that can't and a few that require specific tricks). Beginners are encouraged to work through the examples in UserGuide.pod. Some examples from UserGuide.pod are addressed in this document among those that follow.
Basically a widget can be "created" by simply calling the sub of the same name:
my $main = new MainWindow;
will set aside the necessary system memory etc. for a new
MainWindow widget (it does not appear until after the
MainLoop; call). The object "created" is then callable
via the variable $main. So, for example, if you wanted a
Button in your MainWindow, then this:
$main->Button();
would be a very basic example of a widget command. If you wanted to later call
this button widget you would need a "widget tag or ID" to "get a
handle on it". Instead of the above call try something like:
my $button = $main->Button();
The variable $button is how you refer to the Button widget in
subsequent calls, such as when we call the pack routine:
$button -> pack;
A complete script that incorporates these ideas to make a very plain button
would look like:
#!/usr/bin/perl -w
use Tk;
use strict;
my $main = new MainWindow;
my $button = $main -> Button();
$button -> pack;
MainLoop;
But who wants such a plain looking button? You can provide a number of
different widget configurations via calls to the configure routine
as in:
#!/usr/bin/perl -w
use Tk;
use strict;
my $main = new MainWindow;
my $button = $main->Button();
$button -> configure(-text => 'Press me!');
$button -> pack;
MainLoop;
The Perl motto is "there is more than one way to do it." - perl/Tk
remains quite true to this motto as well. Note that the above script could
have been written quite succinctly without the use of either the
$main or $button variables as:
#!/usr/bin/perl -w
use Tk;
use strict;
new MainWindow -> Button(-text => 'Press me!') -> pack;
MainLoop;
But if you want your widgets to actually do things then you must set
up callback procedures as discussed later...
As of Tk-b9(.01) the - sign in front of options (like -text in the above example) will be optional (hence ->Button(text => 'Press me!')).
Previous | Return to table of contents | Next