有没有办法让 IPython Notebook 输出交互地创建输入并执行它?

Is there a way to make an IPython Notebook output interactivly create an input and execute it?

我想知道我是否可以交互式地输出运行一段代码。因此,例如,如果我有一个 class(伪代码部分):

import numpy as np

class test(object):
    def __init__():
        self.a = np.random.randn(10)
        print ## Interactive Output: Click me to view data array##

    def show():
        print a

所以当我创建一个 class 实例时,它应该输出一些交互式 link(可能在 html 中)或类似的东西,当我点击它时, show() 方法应该被调用。但是,我不知道如何实现。

您可以使用笔记本随附的小部件(jupyter they are an independent package)。

这样的东西可以做你想做的事 (Python 3):

from IPython.html import widgets
from IPython.display import display
import numpy as np

class Test(object):
    def __init__(self, arraylen):
        self.a = np.random.randn(arraylen)
        self.button = widgets.Button(description = 'Show')
        self.button.on_click(self.show)
        display(self.button)

    def show(self, ev = None):
        display(self.a)
        self.button.disabled = True


test = Test(10)
  • 您在初始化 class widgets.Button(description = 'Show')
  • 时创建了一个按钮小部件
  • 为其附加一个事件button.on_click(self.show)
  • 并显示按钮display(self.button)
  • show 方法中,我包含了一种在显示数组后禁用按钮功能的方法 self.button.disabled = True。如果你想显示更多次数组,你可以注释掉这一行。