sub
labelframe {
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'
,
);
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/
);
}
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);
}
sub
labelframe_buttons {
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/
);
}
}
}
1;