【问题标题】:Jupyter Ipywidgets - How to clear cell output before re-printing the outputJupyter Ipywidgets - 如何在重新打印输出之前清除单元格输出
【发布时间】:2019-05-30 11:32:55
【问题描述】:

在 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 函数打印新输出之前,是否有清除单元格输出的命令?与此示例不同,输出长度不是固定的,因此解决方案应处理不同大小的输出。

【问题讨论】:

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


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 2016-10-23
      • 2017-08-30
      • 2022-11-20
      • 1970-01-01
      • 1970-01-01
      • 2020-01-14
      • 2015-05-08
      • 1970-01-01
      • 2018-06-06
      相关资源
      最近更新 更多