Viewing file: labelframe.pl (2 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
# labelframe.pl
use vars qw/$TOP/;
sub labelframe {
# Create a top-level window that displays several Labelframe widgets.
my($demo) = @_; $TOP = $MW->WidgetDemo( -geometry_manager => 'grid', -name => $demo, -text => 'Labelframes are used to group related widgets together. The label maybe either plain text or another widget.', -title => 'Labelframe Demonstration', -iconname => 'labelframe', );
# A group of radiobuttons in a labelframe
my $lf1 = $TOP->Labelframe(qw/-text Value -padx 2 -pady 2/); $lf1->grid(qw/-row 0 -column 0 -pady 2m -padx 2m/);
my $lfdummy; foreach my $value (1 .. 4) { $lf1->Radiobutton( -text => "This is value $value" , -variable => \$lfdummy, -value => $value, )->pack(qw/-side top -fill x -pady 2/); }
# A label window controlling a group of options.
my $lf2 = $TOP->Labelframe(qw/-pady 2 -padx 2/); $lf2->grid(qw/-row 0 -column 1 -pady 2m -padx 2m/); my $lfdummy2; my $cb; $cb = $lf2->Checkbutton( -text => 'Use this option', -variable => \$lfdummy2, -command => sub {&labelframe_buttons($lf2, $cb, \$lfdummy2)}, -padx => 0, ); $lf2->configure(-labelwidget => $cb);
foreach my $str (qw/Option1 Option2 Option3/) { $lf2->Checkbutton(-text => $str)->pack(qw/-side top -fill x -pady 2/); }
&labelframe_buttons($lf2, $cb, \$lfdummy2);
$TOP->gridColumnconfigure([0, 1], -weight => 1);
} # end labelframe
sub labelframe_buttons {
# The state of the sub-Checkbuttons is dependent upon the state of # the master -labelwidget Checkbutton.
my ($lf, $cb, $var_ref) = @_;
foreach my $child ($lf->children) { next if $child == $cb; if ($$var_ref) { $child->configure(qw/-state normal/); } else { $child->configure(qw/-state disabled/); } }
} # end labelframe_buttons
1;
|