Я использую ноутбук Jupyter с ядром Python 3. У меня есть вычисления, основанные на вводе пользователем виджетом IPython.
Результат вычисления должен быть показан в ячейке уценки. Для этого я использую Python Markdown nbextension. Теперь возникает вопрос: как обновить ячейку уценки при взаимодействии с пользователем?
Я попытался запустить ячейку уценки из python с помощью вызова Javascript.
В качестве минимального примера могут служить следующие две ячейки. (Первая нормальная ячейка питона, вторая ячейка уценки)
from IPython.display import Javascript
import ipywidgets
def update_md_cell(slider_value):
Javascript("Jupyter.notebook.execute_cells([1])")
t_slider = ipywidgets.IntSlider(min = 0, max = 10, value = 10)
ipywidgets.interactive(update_md_cell, slider_value = t_slider)
... The value of number is {{t_slider.value}}. ...
Но, похоже, это работает только вне функций.
Javascript("Jupyter.notebook.execute_cells ([1])")
перезагружает ячейку уценки.
def update_md_cell():
Javascript("Jupyter.notebook.execute_cells ([1])")
update_md_cell()
ничего не делает.
Есть ли другой способ подключения входов (через виджет IPython) к выходу (в ячейке Markdown)?
Обновление: Как уже упоминалось в комментарии к ответу Сураджа Потнуру, моя основная проблема - это ошибка из здесь :
Большая ошибка: что-то где-то должно возвращать Javascript в качестве вывода, иначе это не будет выполнено в записной книжке.
Но, что еще хуже, возврата в функцию с помощью функции ipywidgets.interactive () недостаточно для исправления ошибки, например ::1026
def update_md_cell():
return Javascript("Jupyter.notebook.execute_cells ([1])")
update_md_cell()
работает.
from IPython.core.display import Javascript
from IPython.display import display
import ipywidgets
def update_md_cell(slider_value):
return Javascript("Jupyter.notebook.execute_cells ([1])")
t_slider = ipywidgets.IntSlider(min = 0, max = 10, value = 10)
ipywidgets.interactive(update_md_cell, slider_value = t_slider)
не работает.
Как заставить работать второе?