我想知道是否可以从笔记本端(即在 Python 中)清除 Jupyter 笔记本中单元格的小部件区域。IPython.display.clear_output()
只清除单元格的输出区域而不是小部件区域。
更新:在最新的 Notebook 和 ipywidgets 中这似乎仍然是一个问题。这是两个最小的示例,说明了我正在努力解决的问题。我要特别清除的小部件输出是qgrid呈现的数据框。在这两种情况下,尽管尝试清除先前的小部件输出,但后续选择会导致在前一个之后附加一个表。每个新表都作为带有 class 的 div 附加p-Widget
。
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(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 = 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)