How to alight and place ipywidgets

时间:2016-05-03 20:10:54

标签: jupyter-notebook ipywidgets

Is there a way to control the placement and alignment of ipywidgets (inside jupyter notebook)?

from ipywidgets import widgets
from IPython.display import Javascript, display
event_type_ui = widgets.Text(value='open', description='Test Event')
platform_ui = widgets.Text(value='Android', description='Control Event')
display(event_type_ui)
display(platform_ui)

enter image description here

转到另一个视图

我想指定一个偏移量(以像素为单位?)以允许标签适合并使两个控件垂直对齐。

3 个答案:

答案 0 :(得分:6)

经过一番摆弄,我得到了这个:

在:enter image description here

在: enter image description here

如果感兴趣,这是一个复制粘贴代码段:

from ipywidgets import widgets
from IPython.display import Javascript, display

align_kw = dict(
    _css = (('.widget-label', 'min-width', '20ex'),),
    margin = '0px 0px 5px 12px'
)
platform_ui = widgets.Dropdown(description = 'platform',options=['iPhone','iPad','Android'], **align_kw)
event_type_ui = widgets.Text(value='open', description='Test Event', **align_kw)
os_version_ui = widgets.Text(value='iOS9', description='Operating System', **align_kw)
refresh_ui = widgets.Checkbox(description='Force Refresh', **align_kw)

display(platform_ui,event_type_ui,os_version_ui,refresh_ui)

答案 1 :(得分:0)

ipywidgets的{​​{3}}说:

  

每个Jupyter交互式窗口小部件都有一个布局属性,它暴露了许多影响窗口小部件布局方式的css属性。

我能够诱使它对齐标签:

from ipywidgets import Text, HBox, VBox, Box from IPython.display import display widget1 = Text(value='Cats', description='Test Event', layout='margin-right:5px') widget2 = Text(value='Oranges', description='Another Test Event') widget1.width = '200px' widget2.width = '150px' display(VBox([widget1, widget2]))

产生了这个:

layout and styling documentation

但总的来说,我似乎并不能直接定位描述标签的布局属性,只是整个小部件本身。

答案 2 :(得分:0)

ipywidgets还具有一个add_class,可在您真正需要它时用于进入杂草:

import ipywidgets as widgets
from IPython.display import display, HTML
widget_list={}
for label in ("longish description","brief"):
    widget_list[label]=widgets.Text(description=label)
    widget_list[label].add_class("balanced-text")

display(HTML("<style>div.balanced-text .widget-label {max-width:200px; width:200px}</style>"))
display(widgets.VBox(list(widget_list.values())))

enter image description here