ipywidgets - 单击后在列表中显示下一个值

时间:2017-03-28 16:45:42

标签: jupyter-notebook ipywidgets

我尝试使用ipywidgets来显示我的列表中的下一个值(在Jupyter笔记本中),在单击按钮后显示为display_vals。但是,使用以下代码段,我收到错误

local variable 'i' referenced before assignment

这是我的代码片段

from IPython.display import display, clear_output
import ipywidgets as widgets

button = widgets.Button(description="Click Me!")
display(button)

display_vals = ['a', 'b', 'c']
i = 0

def on_button_clicked(b):
    print(display_vals[i])
    clear_output()
    i += 1

button.on_click(on_button_clicked)

我想我只是不知道在点击按钮时解析变量的方法。

1 个答案:

答案 0 :(得分:1)

你可以通过将i声明为全局并包含if语句来实现:

from IPython.display import display, clear_output
import ipywidgets as widgets

button = widgets.Button(description="Click Me!")
display(button)

display_vals = ['a', 'b', 'c']
i = 0

def on_button_clicked(b):
    global i

    clear_output()
    if i < len(display_vals):
        print(display_vals[i])
        i += 1

button.on_click(on_button_clicked)

但是,如果你决定走这条路,你应该将i重命名为更独特的东西。