from __future__ import print_function
The ButtonWidget
isn't used to represent a data type. Instead the button widget is used to handle mouse clicks. The on_click
method of the ButtonWidget
can be used to register function to be called when the button is clicked. The docstring of the on_click
can be seen below.
from IPython.html import widgets
print(widgets.ButtonWidget.on_click.__doc__)
Button clicks are transmitted from the front-end to the back-end using custom messages. By using the on_click
method, a button that prints a message when it has been clicked is shown below.
from IPython.display import display
button = widgets.ButtonWidget(description="Click Me!")
display(button)
def on_button_clicked(b):
print("Button clicked.")
button.on_click(on_button_clicked)
The TextWidget
also has a special on_submit
event. The on_submit
event fires when the user hits return.
text = widgets.TextWidget()
display(text)
def handle_submit(sender):
print(text.value)
text.on_submit(handle_submit)
Traitlet Events¶
Widget properties are IPython traitlets. Traitlets are eventful. To handle changes, the on_trait_change
method of the widget can be used to register a callback. The docstring for on_trait_change
can be seen below. Both the name
and remove
properties are optional.
print(widgets.Widget.on_trait_change.__doc__)
Mentioned in the doc string, the callback registered can have 4 possible signatures:
- callback()
- callback(trait_name)
- callback(trait_name, new_value)
- callback(trait_name, old_value, new_value)
Using this method, an example of how to output an IntSliderWiget's value as it is changed can be seen below.
int_range = widgets.IntSliderWidget()
display(int_range)
def on_value_change(name, value):
print(value)
int_range.on_trait_change(on_value_change, 'value')
[Next](Widget Styling.ipynb)