【问题标题】:Getting the current value of an IPython widget from within a loop从循环中获取 IPython 小部件的当前值
【发布时间】:2018-03-21 13:55:59
【问题描述】:

我想在某个循环中获取滑块小部件的值。但是,我希望这些能够实时更新。

例如见下文。在图中的代码中,我初始化了一些滑块,然后运行下面的循环。在循环运行时,我移动滑块。循环中的打印值不会从初始值改变。当我执行最后一个单元格时,会显示更新的滑块值。

【问题讨论】:

  • 当你运行 for 循环单元时,内核会一直忙到循环结束。我相信只有当循环单元完成运行时,滑动滑块才会有效地改变w
  • 谢谢法比奥,我看到了这个,但是,看到我不想让循环等待输入(我只是希望它每秒检查一下它是什么)我认为它不是相关的。我将再次检查示例。

标签: python ipython jupyter-notebook ipywidgets


【解决方案1】:

这是一个受异步小部件中最后一个示例启发的解决方案(如@Fabio Perez 所建议):

import threading
from IPython.display import display
import ipywidgets as widgets
def f(a, b):
    return

w = interactive(f, a=10, b=20)

def work(w):
    for ii in range(10):
        time.sleep(1)
        print(w.kwargs, w.result)

thread = threading.Thread(target=work, args=(w,))
display(w)
thread.start()

这会启动一个单独的线程来检查小部件的值。

【讨论】:

  • 是的,据我所知,jupyter lab 的整个扩展都是不同的
猜你喜欢
  • 2013-09-06
  • 2023-04-05
  • 2014-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-21
  • 1970-01-01
  • 2016-07-02
相关资源
最近更新 更多