如何在Jupyter笔记本中删除或禁用ipywidget的小部件清除按钮?

时间:2017-02-10 08:57:44

标签: python ipython-notebook jupyter-notebook ipywidgets

我正在尝试在Jupyter / IPython笔记本中为Python代码编写一个简单的用户界面。我正在使用惊人的ipywidgets。我需要找到一种方法来阻止用户通过意外点击<button class="close">×</button>(小部件左侧的X)来清除小部件。我花了几个小时寻找一种简单的方法来做到这一点。以下是单个Jupyter笔记本单元中问题的简单示例:

import ipywidgets
import IPython.display

w = ipywidgets.IntSlider()

IPython.display.display(w)

结果是一个滑块,滑块左侧的小部件清除按钮X

Image of slider with widget clear button X

如何删除或禁用窗口小部件清除按钮,以便用户不会意外清除窗口小部件?

1 个答案:

答案 0 :(得分:1)

我正在研究同样的问题并通过一些黑客解决它。所以在这里放弃我的解决方案:

在正在运行的笔记本中,在单元格中运行此代码:

from IPython.display import HTML

htmlscript_ipywidget_disable_closing = '''<script>
disable = true
function disable_ipyw_close(){
    if(disable){
        $('div.widget-area > div.prompt > button.close').hide()
    }
    else{
        $('div.widget-area > div.prompt > button.close').show()    
    }
    disable = !disable
}
$( document ).ready(disable_ipyw_close);
</script>

<form action="javascript:disable_ipyw_close()"><input style="opacity: 0.5" type="submit" value="Disable ipywidget closing"></form>'''
# change opacity to 0 to hide this button itself
HTML(htmlscript_ipywidget_disable_closing)

输出中会出现一个按钮,用于切换这些ipywidget关闭按钮的可见性。 这得到了最高答案here的启发,这是关于隐藏所有输入单元格。