##// END OF EJS Templates
one more place
one more place

File last commit:

r16120:24b93a1d
r16227:fb1ae9e9
Show More
Widget Events.ipynb
247 lines | 7.2 KiB | text/plain | TextLexer
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
]
],
Brian E. Granger
Work on widget tutorials
r16098 "name": "",
"signature": "sha256:8cade57fabc6819dc950bc28502028554861fb1440d5d832922b95fd2b8bf25c"
Jonathan Frederic
Uploaded widget tutorial (example) notebooks.
r14323 },
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"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": [
MinRK
review pass on widget examples
r14798 "As mentioned in Part 1, the widget attributes 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."
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": [
MinRK
review pass on widget examples
r14798 "int_range = widgets.IntSliderWidget()\n",
"display(int_range)\n",
Jonathan Frederic
Uploaded widget tutorial (example) notebooks.
r14323 "\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",
MinRK
review pass on widget examples
r14798 "int_range.on_trait_change(on_value_change, 'value')"
Jonathan Frederic
Uploaded widget tutorial (example) notebooks.
r14323 ],
"language": "python",
"metadata": {},
Jonathan Frederic
Renamed widgets......
r14834 "outputs": [],
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": [
MinRK
review pass on widget examples
r14798 "Button Click Event"
Jonathan Frederic
Uploaded widget tutorial (example) notebooks.
r14323 ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
MinRK
review pass on widget examples
r14798 "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 function to be called when the button is clicked. The docstring 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": [
MinRK
review pass on widget examples
r14798 "Register a callback to execute when the button is clicked.\n",
Jonathan Frederic
Updated widget tutorials 1-2
r14708 "\n",
MinRK
review pass on widget examples
r14798 " The callback will be called with one argument,\n",
" the clicked button widget instance.\n",
Jonathan Frederic
Uploaded widget tutorial (example) notebooks.
r14323 "\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",
MinRK
review pass on widget examples
r14798 "def on_button_clicked(b):\n",
Jason Grout
Example notebooks updated.
r14505 " 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 ]
Jonathan Frederic
Renamed widgets......
r14834 },
{
"output_type": "stream",
"stream": "stdout",
"text": [
"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": [
MinRK
review pass on widget examples
r14798 "def new_button(clicked):\n",
Jason Grout
Example notebooks updated.
r14505 " button = widgets.ButtonWidget()\n",
" button.clicks = 0\n",
MinRK
review pass on widget examples
r14798 " clicked.clicks += 1\n",
" button.description = \"%d\" % clicked.clicks\n",
Jason Grout
Example notebooks updated.
r14505 " display(button)\n",
MinRK
review pass on widget examples
r14798 " button.on_click(new_button)\n",
Jonathan Frederic
Updated widget tutorials 1-2
r14708 "button = widgets.ButtonWidget(description = \"Start\")\n",
"button.clicks = 0\n",
"display(button)\n",
MinRK
review pass on widget examples
r14798 "button.on_click(new_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
Uploaded widget tutorial (example) notebooks.
r14323 }
],
"metadata": {}
}
]
}