3

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

import ipywidgets
import IPython.display

w = ipywidgets.IntSlider()

IPython.display.display(w)

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

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

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

4

1 回答 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 关闭按钮的可见性。这在很大程度上受到了这里的最佳答案的启发,该答案是关于隐藏所有输入单元格。

于 2017-08-19T18:58:28.620 回答