http://qs321.pair.com?node_id=488994


in reply to Monitor dimensions

I use the below for a Pane widget which is to hold a Label widget which is to hold a multi-line string for display in a pop-up window.

# Calculate dimensions of message for pane, etc. Then # configure widget to that height and width. sub size_widget_for_string { my ($wgt, $msg, $font) = @_; # Measure widest line of string for given font. my @msg = split "\n", $msg; my $hght = 1.5 * $wgt->fontMetrics($font, -linespace); my $wdth = 0; foreach (@msg) { my $line_wdth = $wgt->fontMeasure($font, " $_ "); $wdth = $line_wdth if $wdth < $line_wdth; $hght += $wgt->fontMetrics($font, -linespace); } # Limit size to reasonable maximums. my $max_hght = 0.6 * $wgt->screenheight; my $max_wdth = 0.9 * $wgt->screenwidth; $hght = $max_hght if $hght > $max_hght; $wdth = $max_wdth if $wdth > $max_wdth; # Configure the widget. $wgt->configure( -width => $wdth, -height => $hght ); }

Synopsis:

size_widget_for_string($pane, $any_old_string, 'courier');

Replies are listed 'Best First'.
Re^2: Monitor dimensions
by biochris (Beadle) on Sep 08, 2005 at 21:16 UTC
    The pane widget was exactly what I was looking for! How did you know that? Thank you very much :) I am a novice perl monk.