diff --git a/IPython/html/static/widgets/js/widget_selection.js b/IPython/html/static/widgets/js/widget_selection.js
index c487834..f2e1bb4 100644
--- a/IPython/html/static/widgets/js/widget_selection.js
+++ b/IPython/html/static/widgets/js/widget_selection.js
@@ -325,6 +325,7 @@ define([
.html(item_html)
.appendTo(that.$buttongroup)
.attr('data-value', encodeURIComponent(item))
+ .attr('data-toggle', 'tooltip')
.attr('value', item)
.on('click', $.proxy(that.handle_click, that));
that.update_style_traits($item_element);
@@ -334,7 +335,8 @@ define([
} else {
$item_element.removeClass('active');
}
- $item_element.prop('disabled', disabled);
+ $item_element.prop('disabled', disabled);
+ $item_element.attr('title', that.model.get('tooltips')[index]);
});
// Remove items that no longer exist.
diff --git a/IPython/html/widgets/widget_selection.py b/IPython/html/widgets/widget_selection.py
index 228498b..bdd649b 100644
--- a/IPython/html/widgets/widget_selection.py
+++ b/IPython/html/widgets/widget_selection.py
@@ -19,7 +19,7 @@ from threading import Lock
from .widget import DOMWidget, register
from IPython.utils.traitlets import (
- Unicode, Bool, Any, Dict, TraitError, CaselessStrEnum, Tuple
+ Unicode, Bool, Any, Dict, TraitError, CaselessStrEnum, Tuple, List
)
from IPython.utils.py3compat import unicode_type
from IPython.utils.warn import DeprecatedClass
@@ -32,6 +32,12 @@ class _Selection(DOMWidget):
``options`` can be specified as a list or dict. If given as a list,
it will be transformed to a dict of the form ``{str(value):value}``.
+
+ When programmatically setting the value, a reverse lookup is performed
+ among the options to set the value of ``selected_label`` accordingly. The
+ reverse lookup uses the equality operator by default, but an other
+ predicate may be provided via the ``equals`` argument. For example, when
+ dealing with numpy arrays, one may set equals=np.array_equal.
"""
value = Any(help="Selected value")
@@ -194,6 +200,7 @@ class ToggleButtons(_Selection):
"""Group of toggle buttons that represent an enumeration. Only one toggle
button can be toggled at any point in time."""
_view_name = Unicode('ToggleButtonsView', sync=True)
+ tooltips = List(Unicode(), sync=True)
button_style = CaselessStrEnum(
values=['primary', 'success', 'info', 'warning', 'danger', ''],