如何将 Gradio 块的值传递给函数的命名参数?

问题描述 投票:0回答:1

示例:

import gradio as gr

def dummy(a, b='Hello', c='!'):
    return '{0} {1} {2}'.format(b, a, c)

with gr.Blocks() as demo:
    txt = gr.Textbox(value="test", label="Query", lines=1)
    txt2 = gr.Textbox(value="test2", label="Query2", lines=1)
    answer = gr.Textbox(value="", label="Answer")
    btn = gr.Button(value="Submit")
    btn.click(dummy, inputs=[txt], outputs=[answer])
    gr.ClearButton([answer])

demo.launch()

如何将

txt2
的值赋予
dummy()
的命名参数
c

python named-parameters gradio
1个回答
0
投票

据我所知,Gradio 并没有直接允许。也就是说,它不允许这样的事情:

btn.click(fn=dummy, inputs={"a": txt, "c": txt2}, outputs=answer)

在这种特定情况下,如果您无法修改

dummy
函数,那么我将使用以下函数重新排列参数:

def rearrange_args(func):
    def wrapper(*args):
        a, c = args
        return func(a, c=c)
    return wrapper

现在,您只需按如下方式修改示例即可:

btn.click(rearrange_args(dummy), inputs=[txt, txt2], outputs=[answer])
© www.soinside.com 2019 - 2024. All rights reserved.