Я хочу иметь возможность взять нормальный вывод для объекта и вставить его в пользовательские компоненты HTML. В частности, я хочу разрешить такие вещи, как помещение нескольких диаграмм в элемент пользовательского интерфейса аккордеона или наличие скрытых фреймов данных, которые отображаются при нажатии кнопки. Есть ли способ получить HTML, который обычно выводится, обернуть его в мои собственные HTML компоненты, а затем вывести его?
Я пытался:
import IPython.display as dp
dp.display(dp.HTML('<div id="mycontainer">')) # Just a simple div,
# but ideally would be e.g. bootstrap component
dp.display(my_obj) # my_obj here could be a (potentially styled) dataframe
# or a plot from matplotlib/altair/etc.
dp.display(dp.HTML('</div>'))
Однако незамкнутый <div>
просто автоматически закрывается, поэтому my_obj
не вставляется в него. Некоторые объекты имеют _repr_html_()
, но не все имеют (особенно диаграммы). Тем не менее, Jupyter, очевидно, имеет некоторый способ извлечения HTML из произвольных объектов.
Кажется, при попытке прочитать источник, nbconvert
используется, чтобы изменить объект на HTML, но я не конечно, если A) я правильно понимаю или B) как получить HTML от произвольного объекта, которого нет в объекте узла ноутбука (или как самому построить такой объект).