##// END OF EJS Templates
catch NotImplementedError, not NotImplemented...
catch NotImplementedError, not NotImplemented in _ipython_display_

File last commit:

r14724:796c0edb
r14795:6721e7f2
Show More
Part 2 - Events.ipynb
285 lines | 8.0 KiB | text/plain | TextLexer
/ examples / widgets / Part 2 - Events.ipynb
Jonathan Frederic
Uploaded widget tutorial (example) notebooks.
r14323 {
"metadata": {
Jonathan Frederic
Remove init_widget_js, use require.js for everything...
r14342 "cell_tags": [
[
"<None>",
null
]
],
Jonathan Frederic
Uploaded widget tutorial (example) notebooks.
r14323 "name": ""
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
Jonathan Frederic
Cleanup examples...
r14724 "cell_type": "markdown",
"metadata": {},
"source": [
"[< Back to Part 1](Part 1 - Basics.ipynb) or [Index](index.ipynb)"
]
},
{
Jonathan Frederic
Uploaded widget tutorial (example) notebooks.
r14323 "cell_type": "code",
"collapsed": false,
"input": [
Jonathan Frederic
Widget examples Python 3.x compatability.
r14413 "from __future__ import print_function # 2.7 compatability\n",
"\n",
Jonathan Frederic
Uploaded widget tutorial (example) notebooks.
r14323 "from IPython.html import widgets # Widget definitions\n",
Jonathan Frederic
Remove init_widget_js, use require.js for everything...
r14342 "from IPython.display import display # Used to display widgets in the notebook"
Jonathan Frederic
Uploaded widget tutorial (example) notebooks.
r14323 ],
"language": "python",
"metadata": {},
Jonathan Frederic
Remove init_widget_js, use require.js for everything...
r14342 "outputs": [],
Jason Grout
update example notebooks
r14619 "prompt_number": 1
Jonathan Frederic
Uploaded widget tutorial (example) notebooks.
r14323 },
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Traitlet Events"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
Jonathan Frederic
Cleanup examples...
r14724 "As mentioned in Part 1, the widget properties are IPython traitlets. Traitlets are eventful. To handle property value changes, the `on_trait_change` method of the widget can be used to register an event handling callback. The doc string for `on_trait_change` can be seen below. Both the `name` and `remove` properties are optional."
Jonathan Frederic
Uploaded widget tutorial (example) notebooks.
r14323 ]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(widgets.Widget.on_trait_change.__doc__)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Setup a handler to be called when a trait changes.\n",
"\n",
" This is used to setup dynamic notifications of trait changes.\n",
"\n",
" Static handlers can be created by creating methods on a HasTraits\n",
" subclass with the naming convention '_[traitname]_changed'. Thus,\n",
" to create static handler for the trait 'a', create the method\n",
" _a_changed(self, name, old, new) (fewer arguments can be used, see\n",
" below).\n",
"\n",
" Parameters\n",
" ----------\n",
" handler : callable\n",
" A callable that is called when a trait changes. Its\n",
" signature can be handler(), handler(name), handler(name, new)\n",
" or handler(name, old, new).\n",
" name : list, str, None\n",
" If None, the handler will apply to all traits. If a list\n",
" of str, handler will apply to all names in the list. If a\n",
" str, the handler will apply just to that name.\n",
" remove : bool\n",
" If False (the default), then install the handler. If True\n",
" then unintall it.\n",
" \n"
]
}
],
Jason Grout
update example notebooks
r14619 "prompt_number": 2
Jonathan Frederic
Uploaded widget tutorial (example) notebooks.
r14323 },
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Mentioned in the doc string, the callback registered can have 4 possible signatures:\n",
"\n",
"- callback()\n",
"- callback(trait_name)\n",
"- callback(trait_name, new_value)\n",
"- callback(trait_name, old_value, new_value)\n",
"\n",
Jonathan Frederic
Cleanup examples...
r14724 "Using this method, an example of how to output an IntSliderWiget's value as it is changed can be seen below."
Jonathan Frederic
Uploaded widget tutorial (example) notebooks.
r14323 ]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
Jonathan Frederic
Updated widget tutorials 1-2
r14708 "intrange = widgets.IntSliderWidget()\n",
Jonathan Frederic
Uploaded widget tutorial (example) notebooks.
r14323 "display(intrange)\n",
"\n",
"def on_value_change(name, value):\n",
Jonathan Frederic
Widget examples Python 3.x compatability.
r14413 " print(value)\n",
Jonathan Frederic
Uploaded widget tutorial (example) notebooks.
r14323 "\n",
Jason Grout
Example notebooks updated.
r14505 "intrange.on_trait_change(on_value_change, 'value')"
Jonathan Frederic
Uploaded widget tutorial (example) notebooks.
r14323 ],
"language": "python",
"metadata": {},
Jonathan Frederic
Updated events example to reflect changes to button.
r14401 "outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
Jason Grout
update example notebooks
r14619 "34\n"
Jason Grout
Example notebooks updated.
r14505 ]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
Jonathan Frederic
Updated widget tutorials 1-2
r14708 "74\n"
Jason Grout
Example notebooks updated.
r14505 ]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
Jonathan Frederic
Updated widget tutorials 1-2
r14708 "98\n"
Jonathan Frederic
Updated events example to reflect changes to button.
r14401 ]
}
],
Jason Grout
update example notebooks
r14619 "prompt_number": 3
Jonathan Frederic
Uploaded widget tutorial (example) notebooks.
r14323 },
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Specialized Events"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Button On Click Event"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
Jonathan Frederic
Cleanup examples...
r14724 "The `ButtonWidget` is a special widget, like the `ContainerWidget` and `TabWidget`, that 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 a click even handler. The doc string of the `on_click` can be seen below."
Jonathan Frederic
Uploaded widget tutorial (example) notebooks.
r14323 ]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(widgets.ButtonWidget.on_click.__doc__)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
Jonathan Frederic
Updated widget tutorials 1-2
r14708 "Register a callback to execute when the button is clicked. \n",
"\n",
" The callback can either accept no parameters or one sender parameter:\n",
Jonathan Frederic
Uploaded widget tutorial (example) notebooks.
r14323 " - callback()\n",
" - callback(sender)\n",
" If the callback has a sender parameter, the ButtonWidget instance that\n",
" called the callback will be passed into the method as the sender.\n",
"\n",
" Parameters\n",
" ----------\n",
" remove : bool (optional)\n",
" Set to true to remove the callback from the list of callbacks.\n"
]
}
],
Jason Grout
update example notebooks
r14619 "prompt_number": 4
Jonathan Frederic
Uploaded widget tutorial (example) notebooks.
r14323 },
{
"cell_type": "markdown",
"metadata": {},
"source": [
Jonathan Frederic
Updated events example to reflect changes to button.
r14401 "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."
Jonathan Frederic
Uploaded widget tutorial (example) notebooks.
r14323 ]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
Jason Grout
Example notebooks updated.
r14505 "button = widgets.ButtonWidget(description=\"Click Me!\")\n",
"display(button)\n",
"\n",
"def on_button_clicked(sender):\n",
" print(\"Button clicked.\")\n",
"\n",
"button.on_click(on_button_clicked)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
Jonathan Frederic
Updated widget tutorials 1-2
r14708 "Button clicked.\n"
Jason Grout
Intermediate changes to javascript side of backbone widgets
r14486 ]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
Jonathan Frederic
Updated widget tutorials 1-2
r14708 "Button clicked.\n"
Jason Grout
Intermediate changes to javascript side of backbone widgets
r14486 ]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
Jonathan Frederic
Updated widget tutorials 1-2
r14708 "Button clicked.\n"
Jason Grout
Intermediate changes to javascript side of backbone widgets
r14486 ]
}
],
Jonathan Frederic
Updated widget tutorials 1-2
r14708 "prompt_number": 5
Jason Grout
Example notebooks updated.
r14505 },
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Event handlers can also be used to create widgets. In the example below, clicking a button spawns another button with a description equal to how many times the parent button had been clicked at the time."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
Jonathan Frederic
Updated widget tutorials 1-2
r14708 "def show_button(sender):\n",
Jason Grout
Example notebooks updated.
r14505 " button = widgets.ButtonWidget()\n",
" button.clicks = 0\n",
Jonathan Frederic
Updated widget tutorials 1-2
r14708 " sender.clicks += 1\n",
" button.description = \"%d\" % sender.clicks\n",
Jason Grout
Example notebooks updated.
r14505 " display(button)\n",
" button.on_click(show_button)\n",
Jonathan Frederic
Updated widget tutorials 1-2
r14708 "button = widgets.ButtonWidget(description = \"Start\")\n",
"button.clicks = 0\n",
"display(button)\n",
"button.on_click(show_button)\n",
Jason Grout
Example notebooks updated.
r14505 " "
],
"language": "python",
"metadata": {},
"outputs": [],
Jonathan Frederic
Updated widget tutorials 1-2
r14708 "prompt_number": 6
Jonathan Frederic
Cleanup examples...
r14724 },
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In [Part 3](Part 3 - Placement.ipynb) of this [series](index.ipynb), you will learn about widget placement."
]
Jonathan Frederic
Uploaded widget tutorial (example) notebooks.
r14323 }
],
"metadata": {}
}
]
}