调整两个Jupyter小部件之间的空间

时间:2017-02-07 22:56:45

标签: python css jupyter-notebook jupyter ipywidgets

我正在尝试创建一个Jupyter Notebook来帮助一些同事以交互方式访问某些数据。我想给他们一些小部件,允许他们使用不同的标准来过滤数据。

主要是它工作得很漂亮,但我无法调整两个小部件之间的间距,这会让我疯狂。

我已尝试按照说明here,但两个按钮始终紧挨着。

// get the data package
var DataPkg = ServiceInitializationParameters.CodePackageActivationContext.
    GetDataPackageObject("SvcData");

// fabric doesn't load data it is just manages for you. data is opaque to Fabric
var customDataFilePath = DataPkg.Path + @"\StaticDataMaster.json";   

// TODO: read customDatafilePath, etc.

如果我打开Jupyter笔记本并执行:

class Dashboard(object):
    def __init__(self):
        item_layout = Layout(flex='1 1 auto',
                             width='auto')

        toggle = widgets.ToggleButtons(
            options=["Foo", "Bar"],
            value="Foo",
            description="Foobar:",
            disable=False,
            layout=item_layout,
        )

        check = widgets.Checkbox(
            value=True,
            description="Checked",
            disabled=False,
            layout=item_layout,
        )

        box_layout = Layout(display='flex',
                            flex_flow='row',
                            justify_content='space around',
                            width='500px',
                            button_layout='solid',
                            )

        buttons = widgets.Box(children=[
            widgets.interactive(self._set_foobar, foobar=toggle, layout=item_layout),
            widgets.interactive(self._set_checked, checked=check, layout=item_layout),
        ],
            layout=box_layout)

        display(buttons)

    def _set_foobar(self, foobar):
        self._foo = foobar == 'Foo'

    def _set_checked(self, checked):
        self._checked = bool(checked)

它产生:

enter image description here

如果我不使小部件互动,即import dashboard y = dashboard.Dashboard() 它完美无缺。

enter image description here

有没有办法可以调整交互式小部件之间的空间?

1 个答案:

答案 0 :(得分:1)

在Jupyter中,您可以将类添加到各种小部件中。如果您有按钮小部件,请使用add_class()函数向其添加类名。然后,使用display()函数添加一些CSS。

import ipywidgets as widgets
from IPython.core.display import display, HTML
but_1 = widgets.Button(
     description = 'Button'
)
but_1.add_class("left-spacing-class")
display(HTML(
     "<style>.left-spacing-class {margin-left: 10px;}</style>"
))
display(but_1)