Jupyter Ipywidgets - Как очистить вывод ячейки перед повторной печатью вывода - PullRequest
0 голосов
/ 03 января 2019

Используя Python 3.7 в записной книжке Jupyter, код ниже показывает текстовое поле ввода, которое запускает функцию handle_submit для распечатки некоторого вывода.В этом примере 40 повторов ввода.

from ipywidgets import widgets
from IPython.display import display

text = widgets.Text()
display(text)

def handle_submit(sender):
    print('\n'.join([text.value] * 40 ))   

text.on_submit(handle_submit)

Запуск этого кода отображает текстовое поле.

Если вы введете текст в поле и нажмете Enter, будет запущена функция handle_submit и«Результат» печатается.

Это может использоваться несколько раз, но все старые выходные данные сохраняются.Таким образом, после использования поля ввода пару раз вам нужно бесконечно прокручивать, чтобы получить новый результат.

Есть ли команда для очистки вывода ячейки перед печатью нового вывода из функции handle_submit?В отличие от этого примера, длина вывода не фиксирована, поэтому решение должно обрабатывать выходы разного размера.

1 Ответ

0 голосов
/ 08 января 2019

Создав виджет «Вывод», вы можете печатать в этом виджете так же, как вывод в ячейку.У вас также есть возможность вызвать clear_output() в менеджере контекста, чтобы очистить вывод.

Я закодировал это так, что вывод очищается при каждой отправке нового ввода, но нет причинпочему вы не можете подключить кнопку для запуска clear_output(), чтобы сделать это вручную.

from ipywidgets import widgets
from IPython.display import display, clear_output

text = widgets.Text()
display(text)
output = widgets.Output()
display(output)

def handle_submit(sender):
    with output:
        clear_output()
        print('\n'.join([text.value] * 40 ))   

text.on_submit(handle_submit)
...