我正在尝试使用python在Jupyter笔记本中创建GUI。我已经编码了按钮以使用小部件执行代码。但是我遇到了两个问题:
这就是我一直在尝试的:
import ipywidgets as widgets
from IPython.display import display
rs_button = widgets.Button(description="Restart Kernel!")
exec_button = widgets.Button(description="Click Me!")
display(rs_button,exec_button)
def rs_button_clicked(b):
IPython.notebook.execute_cell();
def exec_button_clicked(b):
import data_assess_v6 as data_profiler
(execution_time) = data_profiler.data_profile(path,file)
rs_button.on_click(rs_button_clicked)
exec_button.on_click(exec_button_clicked)
谢谢
答案 0 :(得分:0)
通过将javascript注入笔记本,我已经能够实现这两个功能。下面是代码段。
from IPython.display import HTML, Javascript, display
def initialize():
display(HTML(
'''
<script>
code_show = false;
function restart_run_all(){
IPython.notebook.kernel.restart();
setTimeout(function(){
IPython.notebook.execute_all_cells();
}, 10000)
}
function code_toggle() {
if (code_show) {
$('div.input').hide(200);
} else {
$('div.input').show(200);
}
code_show = !code_show
}
</script>
<button onclick="code_toggle()">Click to toggle</button>
<button onclick="restart_run_all()">Click to Restart and Run all Cells</button>
'''
))
initialize()
restart_run_all()
函数将重新启动笔记本内核,然后在10秒后执行所有单元。超时功能的参数可以根据需要进行调整。
code_toggle()
功能可切换笔记本计算机中单元格的输入区域。在切换代码单元时,还可以提供很好的动画效果。
答案 1 :(得分:0)
对于第二个问题,您可以尝试voila
项目:
https://github.com/QuantStack/voila
它确实满足您的要求!
希望这会有所帮助。
编辑:
在安装voila
软件包(通过pip或conda)后,在终端上写入
voila Notebook.ipynb
其中Notebook.ipynb是您要运行的Jupyter笔记本。该笔记本的所有单元将按标准内核执行,但仅显示输出。
有关更多信息,请参阅上面的链接。