gpt4 book ai didi

python - ipywidgets 小部件值没有改变

转载 作者:行者123 更新时间:2023-11-28 22:10:40 24 4
gpt4 key购买 nike

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

我尝试使用不同类型的小部件(TextTextareaCheckboxButton切换按钮)。我已尝试获取 w.valueipywidgets.interactw.observew.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)

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

最佳答案

问题是小部件和 Python 之间的通信内核是异步的且令人困惑。

单元格中的

time.sleep(...) 只会阻止 Python 解释器并执行不允许小部件 Javascript 实现将更改的值发送到 Python内核(因为 Python 内核被阻塞了,没有做任何事情)。

如果您创建小部件然后修改小部件文本条目然后评估w.value下一个单元格中,您将以交互方式看到更改后的值。

enter image description here

请参阅此处的进一步讨论(查找“异步”):

https://github.com/AaronWatters/jp_proxy_widget/blob/master/notebooks/Tutorial.ipynb

一般来说,如果你想强制 Python 解释器查看从 Javascript 小部件实现发送的某些值,Javascript 端必须以某种方式回调 Python 解释器,并且 Python 解释器不能被 sleep 或任何其他此类机制阻塞.

关于python - ipywidgets 小部件值没有改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56403663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com