Получение текущего значения виджета IPython из цикла
Я хотел бы получить значения виджетов слайдера в некотором цикле. Тем не менее, я бы хотел, чтобы они обновлялись в режиме реального времени.
Например, см. Ниже. В изображенном коде я инициализирую несколько ползунков, затем запускаю цикл ниже. Пока петля работает, я перемещаю ползунки вокруг. Напечатанные значения из цикла не изменяются от начального значения. Когда я выполняю последнюю ячейку, отображаются обновленные значения ползунка.
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()
Это запускает отдельный поток, который проверяет значения виджетов.