我有一个函数,它用几个ipywidget作为输入绘制一个图:
from IPython.display import clear_output
def on_clicker(button):
clear_output()
@widgets.interact(dropdown=widgets.Dropdown(...),
datepicker=widgets.DatePicker(...)
def grapher(dropdown, datepicker):
global recalculate
... some graphing stuff
display(recalculate)
recalculate.on_click(on_clicker)这样做的想法是,单击“重新计算”再次调用该图形并清除过去的输出。但是,当我尝试这样做时,装饰符中的小部件仍然被反复使用重新计算:
是否有任何方法清除这些小部件,因为clear_output()似乎不起作用?
发布于 2022-12-02 02:27:41
您可以使用clear_output()函数清除木星笔记本中当前单元格的输出。但是,这将不能清除您在代码中定义的小部件。为了清除这些小部件,每次调用on_clicker()函数时都需要重新初始化它们。
这样做的一种方法是移动在on_clicker()函数中初始化小部件的代码,以便每次调用该函数时都重新初始化这些小部件。
下面是如何修改代码以实现此目的的示例:
from IPython.display import clear_output
def on_clicker(button):
clear_output()
# Define the widgets inside the on_clicker function
dropdown = widgets.Dropdown(...)
datepicker = widgets.DatePicker(...)
@widgets.interact(dropdown=dropdown, datepicker=datepicker)
def grapher(dropdown, datepicker):
global recalculate
... some graphing stuff
display(recalculate)
recalculate.on_click(on_clicker)这样,当调用on_clicker()函数时,它将清除输出并重新初始化小部件,这将解决您的问题。
https://stackoverflow.com/questions/74650205
复制相似问题