def _grab_mouse(self):
if self.is_root:<EOL><INDENT>return<EOL><DEDENT>if self.parent.__mouse_grabber is not None:<EOL><INDENT>grabber = self.root.__find_mouse_grabber()<EOL>raise UsageError(f"<STR_LIT>")<EOL><DEDENT>self.parent.__mouse_grabber = self<EOL>self.parent._grab_mouse()<EOL>
Force all mouse events to be funneled to this widget.

The mouse events will still pass through all of this widget's parents.
This is necessary because some of those parents may transform the 
mouse coordinates, e.g. for scrolling.  However, the usual search for 
the children under the mouse is short-circuited and the events are 
always directed towards this widget.

This method will fail with an exception if another widget is already 
grabbing the mouse.