gradio中的button.click是如何链接事件函数的

gradio官网document关于button和click的内容:https://www.gradio.app/docs/gradio/button#event-listeners-arguments

在我自己的项目中,我困惑于gradio UI中点击了按钮之后如何返回多个输出结果。本文来源于我自己探索使用的小案例,说明了gradio(python)中如何将点击按钮链接到具体函数上的方法。

首先定义了点击按钮要执行的函数,注意到这个函数有两个arguments,return了3个值

def my_func(a, b):
    try:
        return "the results are successfully generated.", int(a) + int(b), int(a) * int(b)
    except Exception as e:
        return f"An error occurred: {str(e)}", None, None

以下是gradio页面部分的代码:

import gradio as gr

with gr.Blocks() as demo:
    # 在页面上定义两个输入框,用于输入a和b的值
    input_a = gr.Text(label="a", placeholder="enter the value of a", interactive=True)
    input_b = gr.Text(label="b", placeholder="enter the value of b", interactive=True)

    # 定义一个按钮,用于触发计算a + b的结果
    calculate_button = gr.Button("Calculate!")

    # 显示成功信息或系统错误信息
    message_box_1 = gr.Textbox(label="Message", lines=2, interactive=False)
    # 显示计算a + b的结果
    message_box_2 = gr.Textbox(label="a + b", lines=1, interactive=False)
    # 显示计算a * b的结果
    message_box_3 = gr.Textbox(label="a * b", lines=1, interactive=False)

    # 定义按钮点击事件
    calculate_button.click(
        fn=my_func,
        inputs=[input_a, input_b],
        outputs=[message_box_1, message_box_2, message_box_3])

if __name__ == "__main__":
    demo.launch(share=False, server_port=7860)

我们先来看一下运行的结果:
当我输入的内容为数字时,输出正常的结果。
在这里插入图片描述

但此时如果我将其中一个输入值改成字母,在第一个message box中输出的就是系统error message:
在这里插入图片描述
建议大家把代码拷贝到自己的环境中,然后尝试修改代码来尝试。
链接按钮点击事件的关键在于:

calculate_button.click(
        fn=my_func,
        inputs=[input_a, input_b],
        outputs=[message_box_1, message_box_2, message_box_3])

fn后跟函数名;
inputs是一个数组,数量和内容内容对应的是事件函数的两个arguments
outputs也是一个数组,数量和内容对应的是事件函数的return
在这个例子中,因为我希望如果发生系统错误,直接显示错误信息内容,而不显示计算结果,所以在事件函数的定义中,except return的后面两个内容需要用None补齐。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值