Я готовлюсь создать виджет связи для использования в приложении Jupyter. Я пытаюсь понять, когда можно получить доступ к свойству «значение» виджета ... похоже, что «значение» можно прочитать в любое время, но не будет соответствовать «значение» модели виджета до тех пор, пока выполнение ячейки не остановится (т. Е. Состояние браузера виджета не обновляется до состояния ядра виджета).
Чтобы проверить это, я попытался создать небольшой виджет-слайдер, подождать 10 секунд, а затем прочитать свойство виджета "значение" ... все в одной клетке. За 10 секунд пользователь (то есть я) успевает изменить ползунок на что-то вроде «5».
Вот небольшой тест, который можно запустить в ячейке. Когда происходит сон (), я перемещаю ползунок к значению «5».
from ipywidgets import *
import time
slider = IntSlider(
value=7,
min=1,
max=10.0,
step=1,
description="Input:",
)
display(slider)
time.sleep(10) # move slider to 5
print("done " + str(slider.value))
Я ожидал «сделано 5», но получил «сделано 7», подразумевая, что «значение» обновляется только послеячейка завершается.
Всегда ли это так? И есть ли способ принудительно выполнить синхронизацию между состоянием браузера виджета и его состоянием в ядре?
(I do получить ожидаемое "выполнено 5", если я переместу print () вследующая ячейка.)
Спасибо!