# Module: `html.widgets.widget`

Base Widget class. Allows user to create widgets in the back-end that render in the IPython notebook front-end.

## 3 Classes

class `IPython.html.widgets.widget.``CallbackDispatcher`(**kwargs)

  Bases: `IPython.config.configurable.LoggingConfigurable`

  A structure for registering and running callbacks

  `register_callback`(callback, remove=False)

    (Un)Register a callback

    Parameters:

    callback: method handle

    > Method to be registered or unregistered.

    remove=False: bool

    > Whether to unregister the callback.

class `IPython.html.widgets.widget.``Widget`(**kwargs)

  Bases: `IPython.config.configurable.LoggingConfigurable`

  `__init__`(**kwargs)

    Public constructor

  `close`()

    Close method.

    Closes the widget which closes the underlying comm. When the comm is closed, all of the widget views are automatically removed from the front-end.

  `comm`

    Gets the Comm associated with this widget.

    If a Comm doesn’t exist yet, a Comm will be created automagically.

  `get_state`(key=None)

    Gets the widget state, or a piece of it.

    Parameters:

    key : unicode (optional)

    > A single property’s name to get.

  `model_id`

    Gets the model id of this widget.

    If a Comm doesn’t exist yet, a Comm will be created automagically.

  `on_displayed`(callback, remove=False)

    (Un)Register a widget displayed callback.

    Parameters:

    callback: method handler

    > Must have a signature of:

    >     callback(widget, **kwargs)

    > kwargs from display are passed through without modification.

    remove: bool

    > True if the callback should be unregistered.

  `on_msg`(callback, remove=False)

    (Un)Register a custom msg receive callback.

    Parameters:

    callback: callable

    > callback will be passed two arguments when a message arrives:

    >     callback(widget, content)

    remove: bool

    > True if the callback should be unregistered.

  static `on_widget_constructed`(callback)

    Registers a callback to be called when a widget is constructed.

    The callback must have the following signature: callback(widget)

  `send`(content)

    Sends a custom msg to the widget model in the front-end.

    Parameters:

    content : dict

    > Content of the message to send.

  `send_state`(key=None)

    Sends the widget state, or a piece of it, to the front-end.

    Parameters:

    key : unicode (optional)

    > A single property’s name to sync with the front-end.

class `IPython.html.widgets.widget.``DOMWidget`(**kwargs)

  Bases: `IPython.html.widgets.widget.Widget`

  `add_class`(class_names, selector='')

    Add class[es] to a DOM element.

    Parameters:

    class_names: unicode or list

    > Class name(s) to add to the DOM element(s).

    selector: unicode (optional)

    > JQuery selector to select the DOM element(s) that the class(es) will be added to.

  `get_css`(key, selector='')

    Get a CSS property of the widget.

    Note: This function does not actually request the CSS from the front-end; Only properties that have been set with set_css can be read.

    Parameters:

    key: unicode

    > CSS key

    selector: unicode (optional)

    > JQuery selector used when the CSS key/value was set.

  `remove_class`(class_names, selector='')

    Remove class[es] from a DOM element.

    Parameters:

    class_names: unicode or list

    > Class name(s) to remove from the DOM element(s).

    selector: unicode (optional)

    > JQuery selector to select the DOM element(s) that the class(es) will be removed from.

  `set_css`(dict_or_key, value=None, selector='')

    Set one or more CSS properties of the widget.

    This function has two signatures: - set_css(css_dict, selector=’‘) - set_css(key, value, selector=’‘)

    Parameters:

    css_dict : dict

    > CSS key/value pairs to apply

    key: unicode

    > CSS key

    value:

    > CSS value

    selector: unicode (optional, kwarg only)

    > JQuery selector to use to apply the CSS key/value. If no selector is provided, an empty selector is used. An empty selector makes the front-end try to apply the css to a default element. The default element is an attribute unique to each view, which is a DOM element of the view that should be styled with common CSS (see $el_to_style in the Javascript code).