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

ipywidgets - display next value in list after clicking

我正在尝试使用 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)

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

您可以通过将 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 重命名为更独特的名称。