4

我正在尝试使用以在单击按钮后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)

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

4

1 回答 1

4

您可以通过将 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为更独特的东西。

于 2017-05-05T18:47:57.857 回答