首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gradio应用程序中的消息传递/反馈机制

Gradio应用程序中的消息传递/反馈机制
EN

Stack Overflow用户
提问于 2022-10-26 16:57:57
回答 1查看 33关注 0票数 0

我正在开发一个Gradio应用程序。

服务器端处理可能需要很长时间,因此我希望能够实现一个消息传递范例,根据处理状态更新用户界面。

动态设置组件的值不起作用(没有错误,只是没有更新)。

代码语言:javascript
复制
from time import sleep

import gradio as gr
import numpy as np
from gradio.components import Button, Image, Markdown, Textbox


def transform(component):
    def _transform(text):
        for i in range(5):
            component.update(value=str(i))
            sleep(1)
        return np.random.randint(0, 230, (100, 100, 3))

    return _transform


with gr.Blocks() as app:
    inp = Textbox(label="Your message")
    out = Image(label="Your transformed message")
    feedback = Markdown(value="Initial")
    btn = Button("See for yourself!", label="Run")
    btn.click(transform(feedback), inputs=inp, outputs=out)
app.launch()

在这里,您可以看到“初始值”仍然存在,而不是"4“。

EN

回答 1

Stack Overflow用户

发布于 2022-10-26 19:43:54

您可以通过将您的函数转换为生成器来实现这一点。基本上,只需将return关键字更改为yield。您还需要启用.queue()

这一守则应适用于:

代码语言:javascript
复制
import gradio as gr
from gradio.components import Markdown, Textbox, Button
from time import sleep


def transform(component):
    for i in range(5):
        yield str(i)
        sleep(3)
    yield f"text -- {i}"


with gr.Blocks() as app:
    inp = Textbox(label="Your message")
    out = Textbox(label="Your transformed message")
    feedback = Markdown("Initial")
    btn = Button("See for yourself!", label="Run")
    btn.click(transform, inputs=inp, outputs=out)

app.queue()
app.launch()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74211548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档