Я хотел бы добавить какую-то функциональность в начале Jupyter Notebook, которая скрывает / показывает все ячейки и перезапускает все ячейки.В итоге я хотел бы получить набор диаграмм, которые обновляются при повторном запуске всех ячеек.
Подробности и то, что я пробовал:
Пост IPython - Запустите все ячейки ниже из виджета , показывающий, как можно добавить кнопку для повторного запуска всех ячеек ниже.И пост Как скрыть код из ячеек в блокноте ipython, визуализированный с помощью nbviewer? .С этой настройкой в двух разных ячейках я получаю следующее:
Когда ячейки свернуты, это выглядит так:
И это работает довольно хорошо, но мне просто очень интересно, можно ли отформатировать кнопки так, чтобы они выглядели одинаково.А может быть можно их выровнять как вывод из одной ячейки?Я пытался сделать это, имея два фрагмента в одной ячейке, но теперь кажется, что Hide button
перезаписывается Refresh button
:
Фрагмент 1:
from IPython.display import HTML
HTML('''<script>
function code_toggle() {
if (code_shown){
$('div.input').hide('500');
$('#toggleButton').val('Show code')
} else {
$('div.input').show('500');
$('#toggleButton').val('Hide code')
}
code_shown = !code_shown
}
$( document ).ready(function(){
code_shown=false;
$('div.input').hide()
});
</script>
<form action="javascript:code_toggle()"><input type="submit" id="toggleButton" value="Show code"></form>''')
from IPython.display import Javascript, display
from ipywidgets import widgets
def run_all(ev):
display(Javascript('IPython.notebook.execute_cells_below()'))
button = widgets.Button(description="Refresh")
button.on_click(run_all)
display(button)
А теперь я получаю следующее:
Выход 1:
Кто-нибудь знает, как сделать это немного элегантнее?