2017-02-10 195 views
3

我想在Jupyter/IPython笔记本中为Python代码编写一个简单的用户界面。我正在使用惊人的ipywidgets。我需要找到一种方法来防止用户无意中点击<button class="close">×</button>(窗口小部件左侧的X)来清除窗口小部件。我花了数小时寻找一个简单的方法来做到这一点。这里的问题,在一个单一的Jupyter笔记本电脑电池的简单,最小的例子:如何删除或禁用Jupyter笔记本中的ipywidget的小部件清除按钮?

import ipywidgets 
import IPython.display 

w = ipywidgets.IntSlider() 

IPython.display.display(w) 

结果与widget清除按钮X在滑块左侧的滑块:

Image of slider with widget clear button X

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

+0

看看自定义样式的部件,或应用JavaScript hack来隐藏它? –

回答

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的巨大启发,这是关于隐藏所有输入单元的。

相关问题