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

3

我正在尝试为Jupyter/IPython笔记本中的Python代码编写一个简单的用户界面。我正在使用令人惊叹的 ipywidgets。我需要找到一种方法,以防止用户意外点击小部件左侧的X(即<button class="close">×</button>)而清除小部件。我花了几个小时搜索一个简单的解决方法。这里是在单个Jupyter笔记本单元格中展示问题的简单最小示例:

import ipywidgets
import IPython.display

w = ipywidgets.IntSlider()

IPython.display.display(w)

结果是一个带有小部件清除按钮X的滑块,该按钮位于滑块左侧:

带有小部件清除按钮X的滑块图像

我如何删除或禁用小部件清除按钮,以便用户无法意外清除小部件?

考虑自定义样式小部件,还是应用JavaScript黑客来隐藏它? - John Mee
1个回答

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关闭按钮的可见性。这受到了这里的顶部答案的启发,该答案是关于隐藏所有输入单元的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接