如何在pythonjupyter笔记本的按钮中编写“重新启动内核并运行全部”的代码?

2024-04-26 04:32:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python在Jupyter笔记本中创建一个GUI。我已经编写了使用小部件执行代码的按钮。但我遇到了两个问题:

  1. 编写一个代码段来重新启动内核并运行所有单元(下面代码片段中的rs_按钮)
  2. 不太重要的是:有没有什么方法可以隐藏python中的所有代码,只显示按钮和用户输入单元格?在

我一直在努力:

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)

谢谢


Tags: 代码importdatadefasipythondisplaybutton
2条回答

对于第二个问题,您可以尝试一下voila项目: https://github.com/QuantStack/voila

它完全符合你的要求!在

希望这有帮助。在

编辑:

在您安装voila包(通过pip或conda)之后,在终端上写入

voila Notebook.ipynb

在哪里笔记本.ipynb是你想运行的Jupyter笔记本。笔记本的所有单元都将在标准内核中执行,但只显示输出。在

更多信息请参考以上链接。在

我已经能够通过在笔记本中注入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()函数用于切换笔记本中单元格的输入区域。它还提供了一个很好的动画,同时切换代码单元。在

相关问题 更多 >