Я работаю над Jupyter Notebook
, в котором я использую кнопку, созданную с помощью ipywidgets
, для отображения df
при нажатии на нее. Для этого я использую следующий код:
import ipywidgets as widgets
import numpy as np
vartest = 0
Button = widgets.Button(description='Search', disabled=False, button_style='info', tooltip='Search')
display(Button)
def whenclick2(b):
global df
if vartest==0:
df = pd.DataFrame(np.arange(5))
class displayDF(object):
def _create_widgets(self):
self.button = Button
self.button.on_click(self._on_button_clicked) # define which function to run when cliked
def _on_button_clicked(self, change):
self.out.clear_output() # clean previous outptu (I think ). Not working
with self.out:# using self.out (the output widget) do the display
display(df) #aqui es donde digo que haga display del dataframe que es la variable self.file1
def display_widgets(self):
self._create_widgets() # calls the creation of the widgets
self.out = widgets.Output() # this is the output widget in which the df is displayed
display(widgets.VBox([self.out])) # controls layout of widget position
def get_df_objects(self):
return self.df_objects
# Run class and store output in something
something = displayDF()
# output the display
something.display_widgets()
#return df
Button.on_click(whenclick2)
Код выполняет работу и отображает df
, однако при повторном нажатии кажется, что код clear_output()
не работает. Вместо того, чтобы удалить предыдущий вывод и затем доставить новый, он просто печатает второй под первым, и т. Д. c.
Этот код является адаптацией из этого поста - Python Возврат объекта виджета кнопки возврата . В этом примере ему удается заставить это работать, но я пытаюсь приспособить это к моему случаю, и я не могу воспроизвести это поведение. Чего мне не хватает?