Мне интересно, можно ли очистить область виджета ячейки в записной книжке Jupyter со стороны записной книжки (то есть в Python). IPython.display.clear_output() очищает только область вывода ячейки, но не область виджетов.
Обновление: это все еще проблема в последних версиях Notebook и ipywidgets. Вот два минимальных примера, иллюстрирующих проблему, с которой я борюсь. Выходные данные виджета, которые я пытаюсь очистить, — это фреймы данных, отображаемые qgrid. В обоих случаях, несмотря на попытку очистить предыдущий вывод виджета, при последующем выборе таблица добавляется после предыдущей. Каждая новая таблица добавляется как 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)
Возможный дубликат выходных данных чистой ячейки записной книжки ipython в коде — person nedned schedule 26.02.2018
