Кнопка Jupyter Notebook - нужно нажать не один раз, а дважды, чтобы очистить вывод - причина, почему - PullRequest
0 голосов
/ 20 апреля 2019

У меня есть код, который получает структурированную информацию из URI данных и отображает ее в виде таблицы (используя Pandas DataFrame).

Пакеты и важные переменные (только для понимания ситуации):

import rdfpandas.graph  # tika importeets Anaconda sisteemaa
import rdflib   # tika importeets Anaconda sisteemaa
import pandas as pd  # tika importeets Anaconda sisteemaa

from ipywidgets import widgets   # pievienots GUI (button, textbox u.tml.) + event handler
from IPython.display import clear_output # dod iespēju izdzēst sūnas "Out" saturu, izmantojot komandu

# Palielina ekrāna izmēru kodam un izvadam līdz ekrāna izmēŗam - 100%
from IPython.core.display import display, HTML
display(HTML("<style>.container { width:100% !important; }</style>"))

g_DBp = rdflib.Graph()
g_DBp.load('http://dbpedia.org/resource/KonoSuba')

# defining arrays (subject_array, predicate_array, object_array) and import info from data graph
# ...

d1 = {'Subject': subject_array, 'Predicate': predicate_array, 'Object': object_array}
df1 = pd.DataFrame(data=d1)

dbp_button = widgets.Button(description="DBPedia")
display(dbp_button)
kitsu_button = widgets.Button(description="Kitsu API")
display(kitsu_button)

out = widgets.Output()

Важная часть:

def on_button_clicked(b):
    with out:
        clear_output(True)
        if(b.description == "DBPedia"):
            display(df1)
        else:
            clear_output(True)

dbp_button.on_click(on_button_clicked)
kitsu_button.on_click(on_button_clicked)

out

Программа показывает две кнопки - если вы нажмете «dbp_button», информационная таблица будет отображена как «output», если вы нажмете «dbp_button», вывод будет очищен.

Вопрос: Почему, изменив функцию "on_button_clicked", комментируя последние строки:

def on_button_clicked(b):
    with out:
        clear_output(True)
        if(b.description == "DBPedia"):
            display(df1)
#         else:
#             clear_output(True)

Мне нужно нажать «kitsu_button» дважды , чтобы очистить вывод?

...