![](/img/trans.png)
[英]Javascript Jupyter Notebook How to get code cell content?
[英]Jump to next code cell (Jupyter notebook)
我想將焦點移到我的 Jupyter 筆記本的下一個單元格。 我寫了一個 Javascript function 當用戶按下 HTML 按鈕時觸發。 我通過使用 IPython.core.display.HTML 中的功能將此按鈕添加到我的筆記本中。 這是按鈕的 HTML 部分:button onclick="set_params();" [在 html 括號內]。 在 function - 是的,名稱為 set_params - 我准備了一個應該由 Python kernel 執行的命令。我確定這實際上是在按下按鈕時完成的。 之后,我希望 cursor 移動到下一個單元格 - 不幸的是,這並沒有發生。 這是我的 Javascript function 的一部分:
var command = 'input_params = [' + names + ']';
IPython.notebook.kernel.execute(command);
i = IPython.notebook.get_selected_index();
IPython.notebook.select(i+1);
我什至用一些額外的代碼檢查了索引為 i+1 的單元格是否真的是一個單元格,它確實是。 為什么焦點不動?
如果您導入 Javascript:
from IPython.display import Javascript
您可以執行以下操作:
def goto_cell_two():
display(Javascript("Jupyter.notebook.execute_cells([2])"))
go_to_cell_two()
單元格從索引 0 開始
幾百萬年后......
因此,我最終調用了 3 個 javascript 函數,即select_next()
、 focus_cell()
和execute_selected_cells()
。 所有這些調用都可以在第一個單元格中組合在一個過程中,然后每次要跳轉到下一個單元格時調用這個 function。
def run_next(ev):
display(Javascript('IPython.notebook.select_next()'))
display(Javascript('IPython.notebook.focus_cell()'))
display(Javascript('IPython.notebook.execute_selected_cells()'))
所以在沒有用戶輸入的代碼的“線性”部分,這個 function 在每個單元格的末尾被調用
run_next(None)
但是,在界面單元格中,只有當用戶選擇/接受參數並且這些參數正確時,才應調用此 function。
recacceptbtn = widgets.Button(
description='Accept',
disabled=False,
button_style='success', # 'success', 'info', 'warning', 'danger' or ''
tooltip='Click to accept',
icon='check-square'
)
def rec_check_update_runnext(evn):
# testing parameters
if recfile.value is not None and recprobe.value is not None:
# saving parameters
run_next(evn)
else:
display(Markdown('**You must select file and probe!**'))
recacceptbtn.on_click(rec_check_update_runnext)
我還沒有對這種方法進行過廣泛的測試,但到目前為止它運行良好並且運行良好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.