Очистить выводной виджет с помощью события кнопки onclick - Python - PullRequest
0 голосов
/ 13 января 2020

Я работаю над 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 Возврат объекта виджета кнопки возврата . В этом примере ему удается заставить это работать, но я пытаюсь приспособить это к моему случаю, и я не могу воспроизвести это поведение. Чего мне не хватает?

...