首页 > 解决方案 > ipywidgets:button.on_click() 有输出延迟

问题描述

介绍

我正在尝试制作一个小工具,用于使用 Jupyter Notebook 中的 ipywidgets 对图像进行分类,但是在对齐类和图像时遇到了一些麻烦。你有什么建议如何解决这个问题。

我做了什么

import ipywidgets as widgets
from IPython.display import display
import glob

# My images
image_paths = glob.glob("./images/*.png")

# Display image
def display_image(path):    
    file = open(path, "rb")
    image = file.read()
    return widgets.Image(
                value=image,
                format='png',
                width=700,
                height=700,
            )

# Dropdown
def create_dropdown():
    return widgets.Dropdown(
        options=["1","2","3","4","5","6","7","8","9","10"],
        value='5',
        description='Category:',
        disabled=False
    )

# Creating widgets
input_dropdown = create_dropdown()
button = widgets.Button(description="Submit")
output_image = widgets.Image()
output_image.value = display_image(image_paths[-1]).value

# Define function to bind value of the input to the output variable 
def bind_input_to_output(sender):
    image_path = image_paths[-1]
    image_score = input_dropdown.value
    next_image_path = image_paths.pop()
    print(image_score, image_path)
    output_image.value = display_image(next_image_path).value
    
# Tell the text input widget to call bind_input_to_output() on submit
button.on_click(bind_input_to_output)

# Displaying widgets
display(output_image, input_dropdown, button)

结果

使用上面的代码,我最终对即将到来的图片进行了分类,但我真的不明白为什么。我第一次按下按钮时,小部件似乎没有更新图像。

标签: pythonimagejupyter-notebookwidgetipywidgets

解决方案


推荐阅读