在 IPython 笔记本中显示封装的小部件

Display encapsulated widget in IPython notebook

我有一个封装小部件的对象。

class Foo(object):
    def __init__(self, widget):
        self.widget = widget

我希望此对象在笔记本中显示为此小部件。

>>> my_widget
<fancy widget>

>>> Foo(my_widget)
<fancy widget>

有什么方法可以在我的 Foo class 上实现吗?

ipywidgets 依附于 IPython 丰富的显示系统。 _ipython_display_ 是系统中的一个挂钩,可让您拦截显示调用。请尝试以下操作:

    class Foo(object):
        def __init__(self, widget):
            self.widget = widget

        def _ipython_display_(self, **kwargs):
            self.widget._ipython_display_(**kwargs)

干杯, 乔恩

编辑:Here's ipython 中包含的相关示例文件。向下滚动到 "More complex display"...