Я бы хотел использовать виджеты I Python для загрузки и печати или обновления изображения в виде одной фигуры matplotlib при каждом нажатии кнопки. Я не хочу создавать более одной фигуры, просто обновите существующую фигуру. Я пытался решить несколькими разными способами, но пока не увенчался успехом. Когда я помещаю plt.figure()
вне функции loadimg()
, она не отображается. Я планирую иметь в тетради несколько графиков для других целей, поэтому я избегаю использовать gca и gcf.
def loadimg():
im = plt.imread(txt.value)
ax = fig.add_subplot(111)
ax.imshow(im)
txt = widgets.Text(value=str("img.png"), placeholder='', description='File Path:', disabled=False)
bt = mk_btn_file('...', txt)
bt_load = widgets.Button(description="Load")
bt_load.on_click(lambda self : loadimg())
row1 = widgets.HBox((txt,bt))
row2 = bt_load
display(widgets.VBox((row1,row2)))
fig = plt.figure()
Еще одна попытка заключалась в использовании Output (), но по какой-то причине, когда я нажимаю кнопка во второй раз, она очищает вывод и строит графики снова дважды, а не только один раз.
out = widgets.Output()
def loadimg():
out.clear_output()
with out:
fig = plt.figure()
ax = fig.add_subplot(111)
im = plt.imread(txt.value)
ax.imshow(im)
print('Hello')
display(out)
txt = widgets.Text(value=str("img.png"), placeholder='', description='File Path:', disabled=False)
bt = mk_btn_file('...', txt)
bt_load = widgets.Button(description="Load")
bt_load.on_click(lambda self : loadimg())
row1 = widgets.HBox((txt,bt))
row2 = bt_load
display(widgets.VBox((row1,row2)))
Есть идеи, как я могу это решить? Заранее спасибо