16.9. Widget Position

The methods in this section all deal with the position of a widget.

16.9.1. Position Relative to the Root Window

To determine which widget is at the point x,y;, use the containing method:

$which = $widget->containing($x, $y);

The $x and $y coordinates must be relative to the root window (or on a Microsoft Windows system, the desktop). An empty string is returned if there is no widget found at those coordinates. If there are several widgets located at those coordinates, the one closest to the front is returned.

16.9.2. Coordinates Relative to Parent

You can get the coordinates of the upper-left corner of a widget by using the x and ymethods. The coordinates they return are relative to the parent of the widget:

$x = $widget->x();
$y = $widget->y();

16.9.3. Coordinates Relative to Root Window

To get the coordinates relative to the root window, you can use rootx and rooty on the widget:

$x = $widget->rootx();
$y = $widget->rooty();

The coordinates refer to the upper-left corner of the widget.

16.9.4. Virtual Desktop Coordinates

If you have a virtual desktop, there are special methods that will give coordinates relative to the virtual desktop. Virtual desktops are very common on the X Window System (such as the fvwm and tvtwm window managers), but they exist on Microsoft Windows as well.

To determine the height and width of the virtual desktop, use the vrootheight and vrootwidthmethods:

$height = $widget->vrootheight();
$width = $widget->vrootwidth();

Get Learning 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.