Widgets to be used for the Sage Jupyter notebook#

These are all based on widgets from ipywidgets, changing or combining existing widgets.

class sage.repl.ipython_kernel.widgets.EvalText(**kwargs: Any)#

Bases: EvalWidget, Text

A ipywidgets.Text widget which evaluates (using sage_eval()) its contents and applies an optional transformation.

EXAMPLES:

sage: from sage.repl.ipython_kernel.widgets import EvalText
sage: w = EvalText(value="pi", transform=lambda x: x^2)
sage: w
EvalText(value='pi')
sage: w.get_interact_value()                                                    # needs sage.symbolic
pi^2
class sage.repl.ipython_kernel.widgets.EvalTextarea(**kwargs: Any)#

Bases: EvalWidget, Textarea

A ipywidgets.Textarea widget which evaluates (using sage_eval()) its contents and applies an optional transformation.

EXAMPLES:

sage: from sage.repl.ipython_kernel.widgets import EvalTextarea
sage: w = EvalTextarea(value="pi", transform=lambda x: x^2)
sage: w
EvalTextarea(value='pi')
sage: w.get_interact_value()                                                    # needs sage.symbolic
pi^2
class sage.repl.ipython_kernel.widgets.EvalWidget(*args, **kwds)#

Bases: TransformWidget

A mixin class for a widget to evaluate (using sage_eval()) the widget value and possibly transform it like TransformWidget.

EXAMPLES:

sage: from ipywidgets import ToggleButtons
sage: from sage.repl.ipython_kernel.widgets import EvalWidget
sage: class EvalToggleButtons(EvalWidget, ToggleButtons): pass
sage: w = EvalToggleButtons(options=["pi", "e"], transform=lambda x: x+x)
sage: w
EvalToggleButtons(options=('pi', 'e'), value='pi')
sage: w.get_interact_value()                                                    # needs sage.symbolic
2*pi
get_value()#

Evaluate the bare widget value using sage_eval().

EXAMPLES:

sage: from ipywidgets import Dropdown
sage: from sage.repl.ipython_kernel.widgets import EvalWidget
sage: class EvalDropdown(EvalWidget, Dropdown): pass
sage: w = EvalDropdown(options=["the_answer"], transform=RR)
sage: w
EvalDropdown(options=('the_answer',), value='the_answer')
sage: the_answer = 42
sage: w.get_value()
42
sage: w.get_interact_value()
42.0000000000000
class sage.repl.ipython_kernel.widgets.Grid(**kwargs: Any)#

Bases: TransformWidget, HBox, ValueWidget

A square grid of widgets whose value is a list of lists of the values of the individual widgets.

This is usually created using the input_grid() function.

EXAMPLES:

sage: from ipywidgets import Text
sage: from sage.repl.ipython_kernel.widgets import Grid
sage: w = Grid(2, 2, lambda i,j: Text(value="%s,%s"%(i,j)))
sage: w
Grid(value=[['0,0', '0,1'], ['1,0', '1,1']], children=(Label(value=''), VBox(children=(Text(value='0,0'), Text(value='1,0'))), VBox(children=(Text(value='0,1'), Text(value='1,1')))))
sage: w.get_interact_value()
[['0,0', '0,1'], ['1,0', '1,1']]
description#

A trait for unicode strings.

value#

An instance of a Python list.

class sage.repl.ipython_kernel.widgets.HTMLText(**kwargs: Any)#

Bases: HTMLMath

An HTML widget whose description is always empty.

This is used to display arbitrary HTML text in interacts without a label. The text_control() function from SageNB is an alias of HTMLText.

EXAMPLES:

sage: from sage.repl.ipython_kernel.widgets import HTMLText
sage: w = HTMLText("Hello")
sage: w.description
''
sage: w.description = "text"
sage: w.description
''
property description#

Always return empty string.

EXAMPLES:

sage: from sage.repl.ipython_kernel.widgets import HTMLText
sage: w = HTMLText("Hello")
sage: w.description
''
class sage.repl.ipython_kernel.widgets.SageColorPicker(**kwargs: Any)#

Bases: ColorPicker

A color picker widget returning a Sage Color.

EXAMPLES:

sage: from sage.repl.ipython_kernel.widgets import SageColorPicker
sage: SageColorPicker()
SageColorPicker(value='black')
get_interact_value()#

Return a Sage Color corresponding to the value of this widget.

EXAMPLES:

sage: from sage.repl.ipython_kernel.widgets import SageColorPicker
sage: SageColorPicker().get_interact_value()                                # needs sage.plot
RGB color (0.0, 0.0, 0.0)
class sage.repl.ipython_kernel.widgets.TransformFloatRangeSlider(**kwargs: Any)#

Bases: TransformWidget, FloatRangeSlider

An ipywidgets.FloatRangeSlider widget with an optional transformation.

EXAMPLES:

sage: from sage.repl.ipython_kernel.widgets import TransformFloatRangeSlider
sage: w = TransformFloatRangeSlider(min=0, max=100, value=(7,9), transform=lambda x: x[1]-x[0])
sage: w
TransformFloatRangeSlider(value=(7.0, 9.0))
sage: w.get_interact_value()
2.0
class sage.repl.ipython_kernel.widgets.TransformFloatSlider(**kwargs: Any)#

Bases: TransformWidget, FloatSlider

A ipywidgets.FloatSlider widget with an optional transformation.

EXAMPLES:

sage: from sage.repl.ipython_kernel.widgets import TransformFloatSlider
sage: w = TransformFloatSlider(min=0, max=100, value=7, transform=lambda x: sqrt(x))
sage: w
TransformFloatSlider(value=7.0)
sage: w.get_interact_value()                                                    # needs sage.symbolic
2.6457513110645907
class sage.repl.ipython_kernel.widgets.TransformIntRangeSlider(**kwargs: Any)#

Bases: TransformWidget, IntRangeSlider

An ipywidgets.IntRangeSlider widget with an optional transformation.

EXAMPLES:

sage: from sage.repl.ipython_kernel.widgets import TransformIntRangeSlider
sage: w = TransformIntRangeSlider(min=0, max=100, value=(7,9), transform=lambda x: x[1]-x[0])
sage: w
TransformIntRangeSlider(value=(7, 9))
sage: w.get_interact_value()
2
class sage.repl.ipython_kernel.widgets.TransformIntSlider(**kwargs: Any)#

Bases: TransformWidget, IntSlider

An ipywidgets.IntSlider widget with an optional transformation.

EXAMPLES:

sage: from sage.repl.ipython_kernel.widgets import TransformIntSlider
sage: w = TransformIntSlider(min=0, max=100, value=7, transform=lambda x: x^2)
sage: w
TransformIntSlider(value=7)
sage: w.get_interact_value()
49
class sage.repl.ipython_kernel.widgets.TransformText(**kwargs: Any)#

Bases: TransformWidget, Text

A ipywidgets.Text widget with an optional transformation.

EXAMPLES:

sage: from sage.repl.ipython_kernel.widgets import TransformText
sage: w = TransformText(value="hello", transform=lambda x: x+x)
sage: w
TransformText(value='hello')
sage: w.get_interact_value()
'hellohello'
class sage.repl.ipython_kernel.widgets.TransformTextarea(**kwargs: Any)#

Bases: TransformWidget, Textarea

A ipywidgets.Textarea widget with an optional transformation.

EXAMPLES:

sage: from sage.repl.ipython_kernel.widgets import TransformTextarea
sage: w = TransformTextarea(value="hello", transform=lambda x: x+x)
sage: w
TransformTextarea(value='hello')
sage: w.get_interact_value()
'hellohello'
class sage.repl.ipython_kernel.widgets.TransformWidget(*args, **kwds)#

Bases: object

A mixin class for a widget to transform the bare widget value for use in interactive functions.

INPUT:

  • transform – a one-argument function which transforms the value of the widget for use by an interactive function.

  • other arguments are passed to the base class

EXAMPLES:

sage: from ipywidgets import ToggleButtons
sage: from sage.repl.ipython_kernel.widgets import TransformWidget
sage: class TransformToggleButtons(TransformWidget, ToggleButtons): pass
sage: w = TransformToggleButtons(options=["pi", "e"], transform=lambda x: x+x)
sage: w
TransformToggleButtons(options=('pi', 'e'), value='pi')
sage: w.get_interact_value()
'pipi'
get_interact_value()#

Return the transformed value of this widget, by calling the transform function.

EXAMPLES:

sage: from ipywidgets import Checkbox
sage: from sage.repl.ipython_kernel.widgets import TransformWidget
sage: class TransformCheckbox(TransformWidget, Checkbox): pass
sage: w = TransformCheckbox(value=True, transform=int); w
TransformCheckbox(value=True)
sage: w.get_interact_value()
1
get_value()#

Return self.value.

This is meant to be overridden by sub-classes to change the input of the transform function.

EXAMPLES:

sage: from ipywidgets import ColorPicker
sage: from sage.repl.ipython_kernel.widgets import TransformWidget
sage: class TransformColorPicker(TransformWidget, ColorPicker): pass
sage: TransformColorPicker(value="red").get_value()
'red'