如何更改Jupyter Notebook / Jupyterlab中单个单元格的背景颜色?

P-G*_*-Gn 7 jupyter-notebook jupyter-lab

我设计了一个笔记本,以便用户可以更改的变量在整个笔记本中分为不同的单元格。我想用不同的背景色突出显示那些单元格,以便用户在哪里看到旋钮。

我该如何实现?

注意:这个相关的问题是关于静态代码突出显示(对于手册而言)以及为基本将所有内容都放入标记注释中而提出的可接受的答案。就我而言,我希望突出显示的代码位于可运行的单元格中

kra*_*ski 9

在这里(假设您使用的是Python内核):

from IPython.display import HTML, display

def set_background(color):    
    script = (
        "var cell = this.closest('.jp-CodeCell');"
        "var editor = cell.querySelector('.jp-Editor');"
        "editor.style.background='{}';"
        "this.parentNode.removeChild(this)"
    ).format(color)

    display(HTML('<img src onerror="{}">'.format(script)))
Run Code Online (Sandbox Code Playgroud)

然后像这样使用它:

set_background('honeydew')
Run Code Online (Sandbox Code Playgroud)

该解决方案有点笨拙,我很高兴看到更优雅的解决方案。演示:

在此处输入图片说明

使用JupyterLab 0.32.1在Firefox 60和Chrome 67中进行了测试。

编辑以使其具有细胞魔力,您只需执行以下操作:

from IPython.core.magic import register_cell_magic

@register_cell_magic
def background(color, cell):
    set_background(color)
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

%%background honeydew
my_important_param = 42
Run Code Online (Sandbox Code Playgroud)

  • 对于 Jupyter Notebook v6+,请使用: ```def set_background(color): script = ( "var cell = this.closest('.code_cell');" "var editor = cell.querySelector('.input_area');" "editor.style.background='{}';" "this.parentNode.removeChild(this)" ).format(color) display(HTML('&lt;img src onerror="{}"&gt;'.format(script) ))``` (4认同)