@update_function<EOL><INDENT>def _draw(self):<DEDENT>
if self.root is None: return<EOL>if self.rect is None: return<EOL>if self.group is None: return<EOL>if self.is_hidden: return<EOL>self.do_draw()<EOL>
Create or update the vertex lists needed to render the widget.

A widget should call this method whenever its appearance may have 
changed (e.g. because an attribute was set or something) but its size 
hasn't.  If its size may have changed, call `_repack()` instead.  The 
actual drawing itself is delegated to `do_draw()`, so subclasses should 
implement that method instead of overriding this one.  In order for a 
widget to be drawn, four conditions need to be met:

1. The widget must be connected to the root of the widget hierarchy.  
   Widgets get their pyglet batch object from the root widget, so 
   without this connection they cannot be drawn.

2. The widget must have a size specified by its ``rect`` attribute.  
   This attribute is set when the widget is attached to the hierarchy 
   and its parent calls its `_resize()` method.

3. The widget must be associated with a pyglet graphics group, which 
   controls things like how the widget will be stacked or scrolled.  A 
   group is set when the widget is attached to the hierarchy and its 
   parent calls its `_regroup()` method.

4. The widget must not be hidden.