With Checkbutton and Radiobutton widgets,
you must include a -variable
option to associate a
variable with the status of the indicator.
-variable => \$value
How the variable is used, however, varies between Checkbuttons and
Radiobuttons. When a Checkbutton is clicked,
$value
contains the status of the indicator;
typically 0 if the indicator is off and 1 if the indicator is on. You
can use the -onvalue
and
-offvalue
options to change those defaults (more
on that soon).
With Radiobuttons, there is no default value, and you need to
explicitly assign $value
with the
-value
option. We’ll show some examples of
this in Section 4.8.
By changing the contents of $value
, you can change
the status of the indicator. Changing the contents of
$value
will toggle the indicator on a Checkbutton;
on a Radiobutton, the currently selected Radiobutton might change. It
is important to note that the subroutine associated with
-command
(if there is one) is
not invoked when the value of
$value
is changed. (See the
next section for more information on using the
-command
option.)
Reading the value associated with -variable
is
usually the easiest way to check the status of the indicator on the
Button. Here is an example with two Buttons that change the
$cb_value
variable:
$cb_value = 0; $cb = $mw->Checkbutton(-text => "Checkbutton", -variable => \$cb_value, -command => sub { print "Clicked! $cb_value\n" } )->pack(-side => 'top'); $mw->Button(-text => "CB on", -command => sub { $cb_value = 1 })->pack(-side => 'left'); $mw->Button(-text => "CB off", -command => sub { $cb_value = 0 })->pack(-side => 'left');
See Figure 4-11 for the resulting window.
The value stored in $cb_value
can be changed in
three ways: clicking the Checkbutton, clicking the “CB
off” Button, or clicking the “CB on” Button. Only
when you click on the Checkbutton will you see the word
“Clicked!” written in the shell window from which it was
run, followed by the value of $cb_value
.
There are other ways to change the value associated with the
Checkbutton. See invoke
,
select
, deselect
, and
toggle
, later in this chapter.
Get Mastering Perl/Tk now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.