Асинхронные виджеты ничего не делают после wait_for_change - PullRequest
0 голосов
/ 01 ноября 2019

я пытаюсь узнать об асинхронных виджетах, я хочу сделать кнопку, которая приостанавливает цикл for, пока пользователь не нажмет кнопку, но сначала я изучал на этой странице:

https://ipywidgets.readthedocs.io/en/latest/examples/Widget%20Asynchronous.html

Я использую код, показанный на странице

%gui asyncio
import asyncio
def wait_for_change(widget, value):
    future = asyncio.Future()
    def getvalue(change):
        # make the new value available
        future.set_result(change.new)
        widget.unobserve(getvalue, value)
    widget.observe(getvalue, value)
    return future
from ipywidgets import IntSlider
slider = IntSlider()

async def f():
    for i in range(10):
        print('did work %s'%i)
        x = await wait_for_change(slider, 'value')
        print('async function continued with value %s'%x)
asyncio.ensure_future(f())

slider

, когда я его запускаю, вывод команды “Сделал работу 0” и ползунка появляется, как требуется, но когда я перемещаю ползунок из oв любой позиции код ничего не делает, я продолжаю перемещать его несколько раз, но

'async function continued with value %s'

не печатается, я что-то пропустил? как я понимаю, когда я перемещаю ползунок, я должен видеть напечатанный текст или нет?

спасибо заранее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...