Использовать interactive
с несколькими виджетами довольно просто, например:
interactive(foo, w1=widget1, w2=widget2, ...)
Однако я хотел бы разместить эти виджеты особым образом, используя комбинации VBox и HBox. Вопрос в том, как я могу использовать интерактив с коробкой?
Я пробовал несколько способов, таких как интерактивный вызов с виджетами Box, а затем отображение самого окна, но это, похоже, не работает.
3 ответа
Он находится в документации виджетов:
В дополнение к
interact
IPython предоставляет другую функцию,interactive
, которая полезна, когда вы хотите повторно использовать созданные виджеты или получить доступ к данным, привязанным к элементам управления пользовательского интерфейса. [...] В отличие отinteract
,interactive
возвращает экземплярWidget
, а не сразу отображает виджет. Виджет - этоBox
, который является контейнером для других виджетов.
Итак, здесь у вас уже есть w
как контейнер Box, для которого вы можете изменить свойства макета.
w = interactive(foo, w1=widget1, w2=widget2)
Использование interactive_output
Что-то типа:
t1 = Text(value='Hello 1', description='row 1')
t2 = Text(value='Hello 2', description='')
t3 = Text(value='Hello 3', description='')
t4 = Text(value='Hello 4', description='row 2')
t5 = Text(value='Hello 5', description='')
t6 = Text(value='Hello 6', description='')
t7 = Text(value='Hello 7', description='row 3')
t8 = Text(value='Hello 8', description='')
t9 = Text(value='Hello 9', description='')
def foo(p1,p2,p3,p4,p5,p6,p7,p8,p9):
print(p1,p2,p3,p4,p5,p6,p7,p8,p9)
out = interactive_output(foo, {"p1":t1, "p2":t2, "p3":t3, "p4":t4, "p5":t5, "p6":t6, "p7":t7, "p8":t8, "p9":t9})
hbox1 = HBox([t1, t2, t3])
hbox2 = HBox([t4, t5, t6])
hbox3 = HBox([t7, t8, t9])
ui = VBox([hbox1, hbox2, hbox3])
display(ui, out)
Я столкнулся с той же проблемой и понял, что нам нужно использовать interactive_output
.
out = interactive_output(foo, {"w1":w1, "w2":w2, "w3":w3, "w4":w4})
vbox1 = VBox([w1, w2])
vbox2 = VBoX([w3, w4])
ui = HBox([vbox1, vbox2])
accordian = Accordian(children=[ui])
accordian.set_title(0, 'Title')
display(accordian, out)
Похожие вопросы
Новые вопросы
ipywidgets
Виджеты IPython для ноутбука Jupyter