123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- # Copyright (c) Jupyter Development Team.
- # Distributed under the terms of the Modified BSD License.
- """Box widgets.
- These widgets are containers that can be used to
- group other widgets together and control their
- relative layouts.
- """
- from .widget import register, widget_serialization, Widget
- from .domwidget import DOMWidget
- from .widget_core import CoreWidget
- from .docutils import doc_subst
- from .trait_types import TypedTuple
- from traitlets import Unicode, CaselessStrEnum, Instance
- _doc_snippets = {}
- _doc_snippets['box_params'] = """
- children: iterable of Widget instances
- list of widgets to display
- box_style: str
- one of 'success', 'info', 'warning' or 'danger', or ''.
- Applies a predefined style to the box. Defaults to '',
- which applies no pre-defined style.
- """
- @register
- @doc_subst(_doc_snippets)
- class Box(DOMWidget, CoreWidget):
- """ Displays multiple widgets in a group.
- The widgets are laid out horizontally.
- Parameters
- ----------
- {box_params}
- Examples
- --------
- >>> import ipywidgets as widgets
- >>> title_widget = widgets.HTML('<em>Box Example</em>')
- >>> slider = widgets.IntSlider()
- >>> widgets.Box([title_widget, slider])
- """
- _model_name = Unicode('BoxModel').tag(sync=True)
- _view_name = Unicode('BoxView').tag(sync=True)
- # Child widgets in the container.
- # Using a tuple here to force reassignment to update the list.
- # When a proper notifying-list trait exists, use that instead.
- children = TypedTuple(trait=Instance(Widget), help="List of widget children").tag(
- sync=True, **widget_serialization)
- box_style = CaselessStrEnum(
- values=['success', 'info', 'warning', 'danger', ''], default_value='',
- help="""Use a predefined styling for the box.""").tag(sync=True)
- def __init__(self, children=(), **kwargs):
- kwargs['children'] = children
- super(Box, self).__init__(**kwargs)
- self.on_displayed(Box._fire_children_displayed)
- def _fire_children_displayed(self):
- for child in self.children:
- child._handle_displayed()
- @register
- @doc_subst(_doc_snippets)
- class VBox(Box):
- """ Displays multiple widgets vertically using the flexible box model.
- Parameters
- ----------
- {box_params}
- Examples
- --------
- >>> import ipywidgets as widgets
- >>> title_widget = widgets.HTML('<em>Vertical Box Example</em>')
- >>> slider = widgets.IntSlider()
- >>> widgets.VBox([title_widget, slider])
- """
- _model_name = Unicode('VBoxModel').tag(sync=True)
- _view_name = Unicode('VBoxView').tag(sync=True)
- @register
- @doc_subst(_doc_snippets)
- class HBox(Box):
- """ Displays multiple widgets horizontally using the flexible box model.
- Parameters
- ----------
- {box_params}
- Examples
- --------
- >>> import ipywidgets as widgets
- >>> title_widget = widgets.HTML('<em>Horizontal Box Example</em>')
- >>> slider = widgets.IntSlider()
- >>> widgets.HBox([title_widget, slider])
- """
- _model_name = Unicode('HBoxModel').tag(sync=True)
- _view_name = Unicode('HBoxView').tag(sync=True)
- @register
- class GridBox(Box):
- """ Displays multiple widgets in rows and columns using the grid box model.
- Parameters
- ----------
- {box_params}
- Examples
- --------
- >>> import ipywidgets as widgets
- >>> title_widget = widgets.HTML('<em>Grid Box Example</em>')
- >>> slider = widgets.IntSlider()
- >>> button1 = widgets.Button(description='1')
- >>> button2 = widgets.Button(description='2')
- >>> # Create a grid with two columns, splitting space equally
- >>> layout = widgets.Layout(grid_template_columns='1fr 1fr')
- >>> widgets.GridBox([title_widget, slider, button1, button2], layout=layout)
- """
- _model_name = Unicode('GridBoxModel').tag(sync=True)
- _view_name = Unicode('GridBoxView').tag(sync=True)
|