6

如何获取函数外部执行的函数的输出on_clickipywidgets.Button 在后续步骤中使用?例如,我想取回a每次点击后的值,以便在 jupyter-notebook 的下一个单元格中使用。到目前为止,我只得到None.

from ipywidgets import Button
def add_num(ex):
    a = b+1
    print('a = ', a)
    return a

b = 1
buttons = Button(description="Load/reload file list")
a = buttons.on_click(add_num)
display(buttons)
print(a)
4

1 回答 1

10

我发现做这种事情的最好方法是创建一个子类,widgets.Button然后添加一个新traitlet属性。这样,您可以在创建新按钮对象时加载要对其执行操作的值。您可以随时在函数内部外部访问此新traitlet属性。这是一个例子;

from ipywidgets import widgets
from IPython.display import display
from traitlets import traitlets

class LoadedButton(widgets.Button):
    """A button that can holds a value as a attribute."""

    def __init__(self, value=None, *args, **kwargs):
        super(LoadedButton, self).__init__(*args, **kwargs)
        # Create the value attribute.
        self.add_traits(value=traitlets.Any(value))

def add_num(ex):
    ex.value = ex.value+1
    print(ex.value)

lb = LoadedButton(description="Loaded", value=1)
lb.on_click(add_num)
display(lb)

加载按钮示例截图 希望有帮助。如果这不能解决您的问题,请在下方评论。

于 2017-07-19T17:11:21.560 回答