Size of Widget

You can use the following methods to find out the size of a widget in several different ways.

Widget’s Geometry

The geometry method returns the geometry string for the widget in the form of width x height + x + y.

$geom = $widget->geometry;

The geometry string was discussed in detail in Chapter 11. Geometry values are typically specified in pixels. An exception is a child widget that uses characters as its normal units, such as a Text or Listbox, with -setgrid => 1 specified. In this case, the window manager forces a geometry in integral lines and characters.

Requested Height

The reqheight method returns the height of the widget:

$height = $widget->reqheight;

Requested Width

The reqwidth method returns the width of the widget:

$width = $widget->reqwidth;

Actual Width

To get the width of the widget as it currently is drawn, use the widthmethod:

$cur_width = $widget->width;

When the widget is first created, width will return a 1 until the application has finished drawing everything. After that, it will return the actual width of the widget.

Actual Height

To get the current height, use the height method:

$h = $widget->height;

Just like the width method, height returns a 1 when the widget is first created. You can use the update or afterIdle method to force everything else to happen and then call height or width to get the finished values.

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.