代码之家  ›  专栏  ›  技术社区  ›  576i

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

  •  1
  • 576i  · 技术社区  · 7 年前

    在Jupyter笔记本中使用Python3.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 回复  |  直到 7 年前
        1
  •  5
  •   ac24    7 年前

    通过创建输出小部件,您可以以与单元格输出相同的方式打印到此小部件。你也可以选择打电话 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)