Python函数运行后部分刷新或清除Jupyter单元格显示

Python函数运行后部分刷新或清除Jupyter单元格显示,python,python-3.x,jupyter-notebook,ipython,ipywidgets,Python,Python 3.x,Jupyter Notebook,Ipython,Ipywidgets,我通过Anaconda使用Python 3.7.1和Jupyter Notebook 6.0.1 我试图使用一个由ipywidget下拉列表初始化的函数来过滤数据,在Python中运行一些基本分析。如果下拉列表中的值发生变化,我希望的状态是使下拉列表保留在屏幕上,但按照函数过滤的方式刷新任何数据。为了进一步验证这一点,我构建了以下示例: import ipywidgets as widgets from IPython.display import clear_output def mytest

我通过Anaconda使用Python 3.7.1和Jupyter Notebook 6.0.1

我试图使用一个由ipywidget下拉列表初始化的函数来过滤数据,在Python中运行一些基本分析。如果下拉列表中的值发生变化,我希望的状态是使下拉列表保留在屏幕上,但按照函数过滤的方式刷新任何数据。为了进一步验证这一点,我构建了以下示例:

import ipywidgets as widgets
from IPython.display import clear_output
def mytest(x):
    outs = widgets.Output()
    outs.clear_output()
    with outs:
        lookhere = mytestfilter.value
        if lookhere==1:
            print("hello")
        if lookhere==0:
            print("goodbye")
    display(outs)

mytestfilter = widgets.Dropdown(options={'night': 0, 'morning': 1}, description="FILTER")
display(mytestfilter)
outs=mytestfilter.observe(mytest, names='value')
基本上,在本例中,所需的状态是删除“hello”或“再见”,并在“FILTER”更改时用适当的术语替换它。最终,将对其进行调整,以过滤熊猫网格。我曾尝试使用Ipython.display并将函数组装到要清除的输出,但是,根据我所做的操作,它要么清除所有内容,要么不清除任何内容

我尝试过的事情: -我试图将clear_输出移到函数的开头,以清除任何现有内容。因为在第一次运行时“outs”变量不存在,所以我还尝试在if语句以及try/except中包含它。它似乎什么也没做。 -我尝试了分配变量、显示变量和清除输出的不同顺序,但没有成功

我的怀疑是,问题可能部分在于函数的运行方式以及函数中存在的变量。似乎它启动了一个新的输出,一旦函数被转义,无论下次函数运行时我试图清除什么,输出都会保留在笔记本中

在尝试设置测试时,我引用了以下示例:

我在这篇文章的帮助下解决了这个问题:


显示和输出函数似乎必须存在于我定义的函数之外。话虽如此,我仍然停留在一件事上——如果有人能解释如何在从按钮调用时将多个变量传递到此函数中,那将是非常感激的,因为一旦我重新引入多个变量,我就会收到关于参数位置的错误。

尝试使用单独的输出小部件(
outs=widgets.Output()
),它是在interact函数之外创建的

将IPyWidget作为小部件导入
从IPython.display导入清除输出
outs=widgets.Output()
def mytest(x):
不包括:
清除输出()
lookhere=mytestfilter.value
如果lookhere==1:
打印(“你好”)
如果lookhere==0:
打印(“再见”)
mytestfilter=widgets.Dropdown(选项={'night':0,'morning':1},description=“FILTER”)
显示(mytestfilter)
显示(输出)
mytestfilter.observe(mytest,names='value')