Source code for scwidgets.cue._widget_cue_object

# postpones evaluation of annotations
# see https://stackoverflow.com/a/33533514
from __future__ import annotations

from typing import Any, List, Optional, Union

from IPython.display import display
from ipywidgets import Widget
from traitlets.utils.sentinel import Sentinel

from ._widget_cue_output import CueOutput


[docs] class CueObject(CueOutput): """ A cued displayable `ipywidget.Output` for any Python object. Provides utilities to clear and redraw the object, for example, after an update. :param object: The object to display :param widgets_to_observe: The widget to observe if the `traits_to_observe` has changed. :param traits_to_observe: The trait from the `widgets_to_observe` to observe if changed. Specify `traitlets.All` to observe all traits. :param cued: Specifies if it is cued on initialization :param css_style: - **base**: the css style of the box during initialization - **cue**: the css style that is added when `traits_to_observe` in widget `widgets_to_observe` changes. It is supposed to change the style of the box such that the user has a visual cue that `widget_to_cue` has changed. """ def __init__( self, object: Any = None, widgets_to_observe: Union[None, List[Widget], Widget] = None, traits_to_observe: Union[ None, str, Sentinel, List[Union[str, Sentinel, List[str]]] ] = None, cued: bool = True, css_style: Optional[dict] = None, *args, **kwargs, ): CueOutput.__init__( self, widgets_to_observe, traits_to_observe, cued, css_style, **kwargs, ) self._object = object self.draw_display() @property def object(self): return self._object @object.setter def object(self, object: Any): self._object = object def clear_display(self, wait=False): self.clear_output(wait=wait) def draw_display(self): with self: if isinstance(self._object, str): print(self._object) elif self._object is not None: display(self._object)