ipywidgets 小部件值未更改

Kai*_* O. 5 python jupyter-notebook ipywidgets azure-notebooks

我正在尝试从在 Python 3.6 中运行 Jupyter Notebooks 的 Microsoft Azure Notebooks 中的 ipywidgets 小部件获取输出。但是,当我获取新值时,它不会返回新值。这也适用于从未被其他小部件调用的事件处理程序/交互。

我尝试使用不同类型的小部件(TextTextareaCheckboxButtonToggleButton)输入不同的初始值。我尝试过在按钮上添加w.valueipywidgets.interactw.observe、 和。w.on_click

我做的一个测试:

import time
import ipywidgets as widgets
from IPython.display import display

w = widgets.Text(disabled=False)
display(w)

while True:
    print(w.value)
    time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

我希望当我在字段中输入某些内容时Text,它会输出该文本,但它会继续打印它开始的内容。没有错误。因此,对于上面的示例,无论我在结果文本字段中输入什么,所有打印的都是空行。

ac2*_*c24 2

此代码在普通笔记本服务器中无法按预期工作,因此可能也无法在 Azure 中工作。我怀疑您需要一个线程进程来读取更新的小部件。尝试此操作,看看更改文本字段时 Azure Notebooks 中是否会打印任何内容。

    import time
    import ipywidgets as widgets
    from IPython.display import display

    w = widgets.Text(disabled=False)
    display(w)

    def print_text(widget):
        print(widget['new'])

    w.observe(print_text, names='value')
Run Code Online (Sandbox Code Playgroud)