start page | rating of books | rating of authors | reviews | copyrights

Book HomeMastering Perl/TkSearch this book

13.10. Widget Position

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

13.10.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.

13.10.2. Coordinates Relative to the Parent

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

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

13.10.3. Coordinates Relative to the Root Window

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

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

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

13.10.4. Virtual Desktop Coordinates

If you have a virtual desktop, there are special methods that 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 vrootwidth methods:

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

To get the coordinates of the widget's upper-left corner relative to the virtual desktop, use vrootx and vrooty:

$x = $widget->vrootx;
$y = $widget->vrooty;

Each of these four methods returns an empty string if a virtual desktop is not found.

13.10.5. Cursor Coordinates Relative to the Desktop

You can use pointerx, pointery, and pointerxy to determine the cursor coordinates on the screen.

$x = $widget->pointerx;
$y = $widget->pointery;
($x, $y) = $widget->pointerxy;

All the coordinates returned are relative to the desktop (even if it is a virtual desktop).



Library Navigation Links

Copyright © 2002 O'Reilly & Associates. All rights reserved.