Gradio 用户月活百万之旅!

阅读更多
Gradio logo
  1. Blocks 布局
  2. render

Gradio 新手?从这里开始: 快速开始

查看发布历史

render

@gr.render(inputs=···)
def hello(···):
   ... 

描述

render 装饰器允许 Gradio Blocks 应用程序具有动态布局,以便应用程序中的组件和事件监听器可以根据自定义逻辑进行更改。将 @gr.render 装饰器附加到函数将导致函数在输入更改(或指定的触发器被激活)时重新运行。该函数包含将根据输入更新的组件和事件监听器。
@gr.render 的基本用法如下
1. 创建一个函数并将 @gr.render 装饰器附加到它。
2. 将输入组件添加到 @gr.render 的 inputs= 参数中,并为每个组件在函数中创建相应的参数。
3. 将所有要根据输入更新的组件添加到函数内部。使用这些组件的任何事件监听器也应该在这个函数内部。

示例用法

import gradio as gr

with gr.Blocks() as demo:
    input_text = gr.Textbox()

    @gr.render(inputs=input_text)
    def show_split(text):
        if len(text) == 0:
            gr.Markdown("## No Input Provided")
        else:
            for letter in text:
                with gr.Row():
                    text = gr.Textbox(letter)
                    btn = gr.Button("Clear")
                    btn.click(lambda: gr.Textbox(value=""), None, text)

初始化

参数
🔗
inputs: list[Component] | Component | None
default = None

用作输入的 gradio.components 列表。如果函数不接受任何输入,则应为空列表。

🔗
triggers: list[EventListenerCallable] | EventListenerCallable | None
default = None

要监听的触发器列表,例如 [btn.click, number.change]。如果为 None,将监听对任何输入的更改。

🔗
queue: bool
default = True

如果为 True,则将请求放入队列中(如果已启用队列)。如果为 False,即使已启用队列,也不会将此事件放入队列中。如果为 None,将使用 gradio 应用程序的队列设置。

🔗
trigger_mode: Literal['once', 'multiple', 'always_last'] | None
default = "always_last"

如果为 "once"(除 `.change()` 之外的所有事件的默认值),则在事件挂起时不允许任何提交。如果设置为 "multiple",则在挂起时允许无限次提交,而 "always_last"(`.change()` 和 `.key_up()` 事件的默认值)将允许在挂起事件完成后进行第二次提交。

🔗
concurrency_limit: int | None | Literal['default']
default = None

如果设置,则这是可以同时运行的此事件的最大数量。可以设置为 None 表示没有 concurrency_limit(可以同时运行任意数量的此事件)。设置为 "default" 以使用默认并发限制(由 `Blocks.queue()` 中的 `default_concurrency_limit` 参数定义,其本身默认为 1)。

🔗
concurrency_id: str | None
default = None

如果设置,则这是并发组的 ID。具有相同 concurrency_id 的事件将受到最低设置的 concurrency_limit 的限制。

🔗
show_progress: Literal['full', 'minimal', 'hidden']
default = "full"

指南