Jupyter Ipywidgets-如何在重新打印输出之前清除单元格输出

时间:2019-01-03 20:59:38

标签: python python-3.x jupyter-notebook ipywidgets

在Jupyter笔记本中使用Python 3.7,下面的代码显示了一个文本输入字段,该字段触发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 :(得分:1)

通过创建“输出”小部件,您可以使用与单元格输出相同的方式打印到此小部件。您还可以选择在上下文管理器中调用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)