Мне интересно, можно ли очистить область виджета ячейки в записной книжке 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
Источник: