有没有办法让 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
。如果你想显示更多次数组,你可以注释掉这一行。
我想知道我是否可以交互式地输出运行一段代码。因此,例如,如果我有一个 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
。如果你想显示更多次数组,你可以注释掉这一行。