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)[source]¶
Bases:
EvalWidget
,Text
A
ipywidgets.Text
widget which evaluates (usingsage_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
>>> from sage.all import * >>> from sage.repl.ipython_kernel.widgets import EvalText >>> w = EvalText(value='pi', transform=lambda x: x**Integer(2)) >>> w EvalText(value='pi') >>> w.get_interact_value() # needs sage.symbolic pi^2
- class sage.repl.ipython_kernel.widgets.EvalTextarea(**kwargs: Any)[source]¶
Bases:
EvalWidget
,Textarea
A
ipywidgets.Textarea
widget which evaluates (usingsage_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
>>> from sage.all import * >>> from sage.repl.ipython_kernel.widgets import EvalTextarea >>> w = EvalTextarea(value='pi', transform=lambda x: x**Integer(2)) >>> w EvalTextarea(value='pi') >>> w.get_interact_value() # needs sage.symbolic pi^2
- class sage.repl.ipython_kernel.widgets.EvalWidget(*args, **kwds)[source]¶
Bases:
TransformWidget
A mixin class for a widget to evaluate (using
sage_eval()
) the widget value and possibly transform it likeTransformWidget
.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
>>> from sage.all import * >>> from ipywidgets import ToggleButtons >>> from sage.repl.ipython_kernel.widgets import EvalWidget >>> class EvalToggleButtons(EvalWidget, ToggleButtons): pass >>> w = EvalToggleButtons(options=["pi", "e"], transform=lambda x: x+x) >>> w EvalToggleButtons(options=('pi', 'e'), value='pi') >>> w.get_interact_value() # needs sage.symbolic 2*pi
- get_value()[source]¶
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
>>> from sage.all import * >>> from ipywidgets import Dropdown >>> from sage.repl.ipython_kernel.widgets import EvalWidget >>> class EvalDropdown(EvalWidget, Dropdown): pass >>> w = EvalDropdown(options=["the_answer"], transform=RR) >>> w EvalDropdown(options=('the_answer',), value='the_answer') >>> the_answer = Integer(42) >>> w.get_value() 42 >>> w.get_interact_value() 42.0000000000000
- class sage.repl.ipython_kernel.widgets.Grid(**kwargs: Any)[source]¶
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']]
>>> from sage.all import * >>> from ipywidgets import Text >>> from sage.repl.ipython_kernel.widgets import Grid >>> w = Grid(Integer(2), Integer(2), lambda i,j: Text(value="%s,%s"%(i,j))) >>> 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'))))) >>> w.get_interact_value() [['0,0', '0,1'], ['1,0', '1,1']]
- class sage.repl.ipython_kernel.widgets.HTMLText(**kwargs: Any)[source]¶
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 ofHTMLText
.EXAMPLES:
sage: from sage.repl.ipython_kernel.widgets import HTMLText sage: w = HTMLText("Hello") sage: w.description '' sage: w.description = "text" sage: w.description ''
>>> from sage.all import * >>> from sage.repl.ipython_kernel.widgets import HTMLText >>> w = HTMLText("Hello") >>> w.description '' >>> w.description = "text" >>> 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 ''
>>> from sage.all import * >>> from sage.repl.ipython_kernel.widgets import HTMLText >>> w = HTMLText("Hello") >>> w.description ''
- class sage.repl.ipython_kernel.widgets.SageColorPicker(**kwargs: Any)[source]¶
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')
>>> from sage.all import * >>> from sage.repl.ipython_kernel.widgets import SageColorPicker >>> SageColorPicker() SageColorPicker(value='black')
- get_interact_value()[source]¶
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)
>>> from sage.all import * >>> from sage.repl.ipython_kernel.widgets import SageColorPicker >>> SageColorPicker().get_interact_value() # needs sage.plot RGB color (0.0, 0.0, 0.0)
- class sage.repl.ipython_kernel.widgets.TransformFloatRangeSlider(**kwargs: Any)[source]¶
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
>>> from sage.all import * >>> from sage.repl.ipython_kernel.widgets import TransformFloatRangeSlider >>> w = TransformFloatRangeSlider(min=Integer(0), max=Integer(100), value=(Integer(7), Integer(9)), ... transform=lambda x: x[Integer(1)] - x[Integer(0)]) >>> w TransformFloatRangeSlider(value=(7.0, 9.0)) >>> w.get_interact_value() 2.0
- class sage.repl.ipython_kernel.widgets.TransformFloatSlider(**kwargs: Any)[source]¶
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
>>> from sage.all import * >>> from sage.repl.ipython_kernel.widgets import TransformFloatSlider >>> w = TransformFloatSlider(min=Integer(0), max=Integer(100), value=Integer(7), transform=lambda x: sqrt(x)) >>> w TransformFloatSlider(value=7.0) >>> w.get_interact_value() # needs sage.symbolic 2.6457513110645907
- class sage.repl.ipython_kernel.widgets.TransformIntRangeSlider(**kwargs: Any)[source]¶
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
>>> from sage.all import * >>> from sage.repl.ipython_kernel.widgets import TransformIntRangeSlider >>> w = TransformIntRangeSlider(min=Integer(0), max=Integer(100), value=(Integer(7), Integer(9)), ... transform=lambda x: x[Integer(1)] - x[Integer(0)]) >>> w TransformIntRangeSlider(value=(7, 9)) >>> w.get_interact_value() 2
- class sage.repl.ipython_kernel.widgets.TransformIntSlider(**kwargs: Any)[source]¶
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
>>> from sage.all import * >>> from sage.repl.ipython_kernel.widgets import TransformIntSlider >>> w = TransformIntSlider(min=Integer(0), max=Integer(100), value=Integer(7), transform=lambda x: x**Integer(2)) >>> w TransformIntSlider(value=7) >>> w.get_interact_value() 49
- class sage.repl.ipython_kernel.widgets.TransformText(**kwargs: Any)[source]¶
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'
>>> from sage.all import * >>> from sage.repl.ipython_kernel.widgets import TransformText >>> w = TransformText(value='hello', transform=lambda x: x + x) >>> w TransformText(value='hello') >>> w.get_interact_value() 'hellohello'
- class sage.repl.ipython_kernel.widgets.TransformTextarea(**kwargs: Any)[source]¶
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'
>>> from sage.all import * >>> from sage.repl.ipython_kernel.widgets import TransformTextarea >>> w = TransformTextarea(value='hello', transform=lambda x: x + x) >>> w TransformTextarea(value='hello') >>> w.get_interact_value() 'hellohello'
- class sage.repl.ipython_kernel.widgets.TransformWidget(*args, **kwds)[source]¶
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 functionother 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'
>>> from sage.all import * >>> from ipywidgets import ToggleButtons >>> from sage.repl.ipython_kernel.widgets import TransformWidget >>> class TransformToggleButtons(TransformWidget, ToggleButtons): pass >>> w = TransformToggleButtons(options=["pi", "e"], transform=lambda x: x + x) >>> w TransformToggleButtons(options=('pi', 'e'), value='pi') >>> w.get_interact_value() 'pipi'
- get_interact_value()[source]¶
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
>>> from sage.all import * >>> from ipywidgets import Checkbox >>> from sage.repl.ipython_kernel.widgets import TransformWidget >>> class TransformCheckbox(TransformWidget, Checkbox): pass >>> w = TransformCheckbox(value=True, transform=int); w TransformCheckbox(value=True) >>> w.get_interact_value() 1
- get_value()[source]¶
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'
>>> from sage.all import * >>> from ipywidgets import ColorPicker >>> from sage.repl.ipython_kernel.widgets import TransformWidget >>> class TransformColorPicker(TransformWidget, ColorPicker): pass >>> TransformColorPicker(value='red').get_value() 'red'