我想知道是否有可能从笔记本端(即Python中)清除Jupyter笔记本中单元格的小部件区域。IPython.display.clear_output()
只清除单元格的输出区域,而不清除小部件区域。
更新:在最新的Notebook和ipywidgets中,这似乎仍然是一个问题。这里有两个最小的例子来说明我正在努力解决的问题。我特别要清除的小部件输出是由qgrid呈现的数据帧。在这两种情况下,尽管试图清除先前的小部件输出,但随后的选择会导致在前一个表格之后追加一个表格。每个新表都被附加为带有p-Widget
类的div。
import pandas as pd
import numpy as np
import qgrid
from ipywidgets import interact
from IPython.display import display, clear_output
import notebook
import ipywidgets
print('Jupyter Notebook version: {}'.format(notebook.__version__))
print('ipywidgets version: {}'.format(ipywidgets.__version__))
max_columns = 10
max_rows = 10
col_opts = list(range(1, max_columns + 1))
row_opts = list(range(1, max_rows + 1))
第一次尝试使用interact:
@interact(columns=col_opts, rows=row_opts)
def submit(columns, rows):
df = pd.DataFrame(np.random.randint(0, 100, size=(rows, columns)))
clear_output()
display(qgrid.QGridWidget(df=df)
第二次尝试使用Output小部件:
output = ipywidgets.Output()
display(output)
def submit2(change):
rows = row_input.value
columns = col_input.value
df = pd.DataFrame(np.random.randint(0, 100, size=(rows, columns)))
with output:
output.clear_output()
display(qgrid.QGridWidget(df=df))
col_input = ipywidgets.Dropdown(options=col_opts)
row_input = ipywidgets.Dropdown(options=row_opts)
col_input.observe(submit2, 'value')
row_input.observe(submit2, 'value')
display(col_input)
display(row_input)
发布于 2018-12-13 04:27:08
从ipywidgets 7.0版开始,小部件被视为与任何其他输出一样。要防止在执行clear_output()
时清除小部件(但清除文本输出),请使用Output小部件。如下所示:
from IPython.display import display, clear_output
import ipywidgets as widgets
import random
b = widgets.Button(
description='Show Random',
disabled=False,
button_style='info',
tooltip='Click me',
icon='check'
)
display(b)
out = widgets.Output()
display(out)
def on_button_clicked(b):
with out:
clear_output()
print("New hello from each button click!. This hello from {}.".format(random.choice(list(range(100)))))
b.on_click(on_button_clicked)
发布于 2017-03-15 00:37:13
它是!我是IPython.display.clear_output()
from IPython.display import clear_output
for i in range(10):
clear_output()
print(i)
http://ipython.org/ipython-doc/dev/api/generated/IPython.display.html#IPython.display.clear_output
更新:
from IPython.display import clear_output
from ipywidgets import widgets
widgets.IntSlider(1)
clear_output()
# Note that `clear_output` will not clear widgets displayed using `display(widgets.IntSlider(1))`
widgets.IntSlider(100)
发布于 2017-04-23 22:36:10
在Jupyter notebook 中,您可以清除所有信息(文本和小工具),执行"Cell/Current Output/ clear“操作。
如果你想做programatically,你必须做一个clear_output()
,以便在你创建的每个小部件中清除文本和w.close()
(作为一个小部件)。更多信息请点击此处("Closing widgets"):http://ipywidgets.readthedocs.io/en/latest/examples/Widget%20Basics.html
在您的示例中(至少在第二次尝试中),您需要添加:
col_input.close()
row_input.close()
我已经用以下版本进行了测试:
Jupyter Notebook version: 5.0.0
ipywidgets version: 6.0.0
https://stackoverflow.com/questions/42782902
复制