Как зажигать и размещать ipywidgets

Есть ли способ контролировать размещение и выравнивание ipywidgets (внутри 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)

введите описание изображения здесь

Я хотел бы указать смещение (в пикселях?), Чтобы метка поместилась и чтобы два элемента управления были выровнены по вертикали.


person volodymyr    schedule 03.05.2016    source источник


Ответы (3)


После некоторой игры я смог получить это:

Раньше: введите здесь описание изображения

После: введите здесь описание изображения

Если интересно, вот фрагмент копирования и вставки:

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)
person volodymyr    schedule 05.08.2016

В документации по макету и стилю для ipywidgets говорится:

Каждый интерактивный виджет 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]))

чтобы произвести это:

вывод ipywidgets

Но в целом мне кажется, что мы не можем напрямую указать свойства макета метки описания, а только сам виджет.

person Brian    schedule 05.08.2016
comment
Кроме того, если читать немного дальше на странице документации, там говорится, что если вам нужна большая гибкость для макета слайдеров и заголовков, вы должны использовать комбинацию виджетов Slider и Label, расположенных в макете. - person Brian; 05.08.2016

У 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())))

введите описание изображения здесь

person Alan Dyke    schedule 12.10.2018