Получение текущего значения виджета 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()

Это запускает отдельный поток, который проверяет значения виджетов.

Другие вопросы по тегам