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');
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|