从循环中获取IPython小部件的当前值

时间:2018-03-21 13:55:59

标签: python ipython jupyter-notebook ipywidgets

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

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

enter image description here

1 个答案:

答案 0 :(得分: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()

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