我正在尝试使用多选小部件来让用户从国家/地区列表中进行选择,然后有一个小部件按钮,当单击该按钮时,它会运行下面的所有单元格。
这会显示列表。
from IPython.display import display
w = widgets.SelectMultiple(
description="Select up to five countries",
options=dfCountries['name'].tolist()
)
display(w)
我想要这样的东西运行下面的所有单元格:
def run_all(button):
get_ipython().run_cell()
button = widgets.Button(description="Create next input")
button.on_click(run_all)
display(button)
但我找不到“运行下面所有细胞的钩子”
谢谢
如果我理解正确你可以通过js做到这一点。
请参阅以下代码:
from IPython.display import Javascript
Javascript('IPython.notebook.execute_cells_below()')
将执行活动单元格下面的所有单元格,因此对于按钮,它可能是这样的:
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="Create next input")
button.on_click(run_all)
display(button)
如果这是你需要的,请告诉我。
要在当前单元格下运行所有单元格而不执行具有此按钮的单元格:
from IPython.display import Javascript, display
from ipywidgets import widgets
def run_all(ev):
display(Javascript('IPython.notebook.execute_cell_range(IPython.notebook.get_selected_index()+1, IPython.notebook.ncells())'))
button = widgets.Button(description="Run all below")
button.on_click(run_all)
display(button)
这允许当前单元格还提示其他输入和那些输入值被保留。 IPython.notebook.execute_cells_below()
将执行当前单元格,如果此单元格中还显示其他输入,则它们将获得其默认值。
您已经收到了一些很好的建议,但我想提一下HTML的非常灵活的选项:
码:
from IPython.core.display import HTML
HTML('''<script> </script> <form action="javascript:IPython.notebook.execute_cells_below()"><input type="submit" id="toggleButton" value="Refresh"></form>''')
这将为您生成一个按钮,用于运行笔记本中的所有单元格
这种方法的一个额外功能是如果你在github https://github.com/dunovank/jupyter-themes上使用Dunovank的Jupyter主题,按钮的布局将遵循主题选择
我试图附上截图,但我还不能这样做。