To find out if the widget has been mapped to the screen, use the ismapped method:
if ($widget->ismapped) # Do something } else { # map the widget }
The ismapped method returns 1 if the widget is currently mapped to the screen and 0 if it is not.