博主原文链接:https://www.yourmetaverse.cn/nlp/421/
探索Gradio库的Radio模块及其change、input和select方法
Gradio是一个用于构建交互式界面的Python库,它简化了界面开发的过程。其中的Radio模块是一种单选按钮组件,允许用户从预定义的选项中选择一个。
在Gradio库中,Radio模块提供了一组单选按钮,用户只能选择其中的一个选项。它具有以下几种方法:change、input和select。
1. change方法:
change方法是一个监听器,当组件的值发生变化时触发。这个变化可以是用户输入导致的(比如用户在文本框中输入)或者是函数更新导致的(比如图像从事件触发的输出中接收到一个值)。在Gradio Blocks中使用这个方法时,可以在函数周围创建一个界面。该方法的参数包括:
- fn: 要创建界面的函数,通常是一个机器学习模型的预测函数。函数的每个参数对应一个输入组件,函数应该返回一个值或值的元组,元组中的每个元素对应一个输出组件。
- inputs: 作为输入的组件列表。
- outputs: 作为输出的组件列表。
- api_name: 定义端点在API文档中的显示方式。
- 其他参数用于配置事件的行为,例如滚动到输出组件、显示进度动画等。
2. input方法:
input方法是一个监听器,当用户更改组件的值时触发。这个方法也可以在Gradio Blocks中使用。它的参数和change方法类似,用于创建一个界面。
3. select方法:
select方法是一个事件监听器,当用户选择Radio选项时触发。它使用gradio.SelectData作为事件数据,其中包含了所选选项的值和索引。参数和其他监听器方法类似,用于创建一个界面。
通过使用这些方法,可以根据用户的输入或选择来触发相应的操作或功能。Gradio库提供了丰富的组件和方法,使界面开发变得简单而灵活。
参数详解
Radio模块参数
参数 | 数据类型 | 默认值 | 描述 |
---|---|---|---|
choices | list[str] or None | None | 可选项列表。 |
value | str or Callable or None | None | 默认选择的选项。如果为None,则默认没有选中任何选项。如果为可调用对象,则在应用程序加载时调用该函数以设置组件的初始值。 |
type | str | “value” | 组件返回的值的类型。"value"返回所选选项的字符串,"index"返回所选选项的索引。 |
label | str or None | None | 在界面中显示的组件名称。 |
info | str or None | None | 组件的描述信息。 |
every | float or None | None | 如果’value’是可调用对象,则在客户端连接打开的同时每隔指定秒数运行该函数。否则不起作用。队列必须启用。可以通过该组件的.load_event 属性访问事件(例如取消事件)。 |
show_label | bool | True | 如果为True,将显示标签。 |
container | bool | True | 如果为True,将组件放置在容器中,提供一些额外的边框间距。 |
scale | int or None | None | 相对于相邻组件的宽度比例。例如,如果组件A的scale=2,组件B的scale=1,那么A的宽度将是B的两倍。应为整数。 |
min_width | int | 160 | 最小像素宽度,如果屏幕空间不足以满足此值,则会换行。如果某个比例值导致该组件比min_width更窄,将首先考虑min_width参数。 |
interactive | bool or None | None | 如果为True,此单选组中的选项将可以选择;如果为False,将禁用选择。如果未提供,将根据组件用作输入还是输出来推断。 |
visible | bool | True | 如果为False,将隐藏组件。 |
elem_id | str or None | None | 可选的字符串,用作此组件在HTML DOM中的ID。可用于指定CSS样式。 |
elem_classes | list[str] or str or None | None | 可选的字符串列表,用作此组件在HTML DOM中的类。可用于指定CSS样式。 |
change方法参数:
参数 | 数据类型 | 默认值 | 描述 |
---|---|---|---|
fn | Callable or None | 必需 | 要包装为接口的函数。通常是机器学习模型的预测函数。函数的每个参数对应一个输入组件,函数应返回单个值或值的元组,其中元组中的每个元素对应一个输出组件。 |
inputs | Component or list[Component] or set[Component] or None | None | 用作输入的组件列表。如果函数不需要输入,则应为空列表。 |
outputs | Component or list[Component] or None | None | 用作输出的组件列表。如果函数不返回输出,则应为空列表。 |
api_name | str or None or Literal[False] | None | 定义端点在API文档中的显示方式。可以是字符串、None或False。如果为False,则端点将不会在API文档中公开。如果设置为None,则端点将作为无名端点公开在API文档中,尽管此行为将在Gradio 4.0中更改。如果设置为字符串,则端点将以给定的名称在API文档中公开。 |
status_tracker | None | None | 状态跟踪器。 |
scroll_to_output | bool | False | 如果为True,将在完成后滚动到输出组件。 |
show_progress | Literal[‘full’, ‘minimal’, ‘hidden’] | “full” | 如果为True,在等待时显示进度动画。 |
queue | bool or None | None | 如果为True,将请求放入队列(如果队列已启用)。如果为False,即使队列已启用,也不会将此事件放入队列中。如果为None,则使用gradio应用程序的队列设置。 |
batch | bool | False | 如果为True,则函数应处理一批输入,即应接受每个参数的输入值列表。列表应具有相等的长度(最大长度为max_batch_size )。然后函数必须返回一个元组的列表(即使只有1个输出组件),元组中的每个列表对应一个输出组件。 |
max_batch_size | int | 4 | 如果从队列调用此方法,则最大批处理输入数目。仅在batch=True时相关。 |
preprocess | bool | True | 如果为False,则在运行’fn’之前不会对组件数据进行预处理(例如,如果使用Image 组件以base64字符串形式调用此方法)。 |
postprocess | bool | True | 如果为False,则在将’fn’输出返回给浏览器之前不会对组件数据进行后处理。 |
cancels | dict[str, Any] or list[dict[str, Any]] or None | None | 触发此监听器时要取消的其他事件列表。例如,设置cancels=[click_event]将取消click_event,其中click_event是另一个组件的.click 方法的返回值。尚未运行的函数(或正在迭代的生成器)将被取消,但当前正在运行的函数将被允许完成。 |
every | float or None | None | 在客户端连接打开的同时每隔指定秒数运行此事件。以秒为单位解释。队列必须启用。 |
input方法参数与change方法参数相同。
select方法参数:
参数 | 数据类型 | 默认值 | 描述 |
---|---|---|---|
fn | Callable or None | 必需 | 要包装为接口的函数。通常是机器学习模型的预测函数。函数的每个参数对应一个输入组件,函数应返回单个值或值的元组,其中元组中的每个元素对应一个输出组件。 |
inputs | Component or list[Component] or set[Component] or None | None | 用作输入的组件列表。如果函数不需要输入,则应为空列表。 |
outputs | Component or list[Component] or None | None | 用作输出的组件列表。如果函数不返回输出,则应为空列表。 |
api_name | str or None or Literal[False] | None | 定义端点在API文档中的显示方式。可以是字符串、None或False。如果为False,则端点将不会在API文档中公开。如果设置为None,则端点将作为无名端点公开在API文档中,尽管此行为将在Gradio 4.0中更改。如果设置为字符串,则端点将以给定的名称在API文档中公开。 |
status_tracker | None | None | 状态跟踪器。 |
scroll_to_output | bool | False | 如果为True,将在完成后滚动到输出组件。 |
show_progress | Literal[‘full’, ‘minimal’, ‘hidden’] | “full” | 如果为True,在等待时显示进度动画。 |
queue | bool or None | None | 如果为True,将请求放入队列(如果队列已启用)。如果为False,即使队列已启用,也不会将此事件放入队列中。如果为None,则使用gradio应用程序的队列设置。 |
batch | bool | False | 如果为True,则函数应处理一批输入,即应接受每个参数的输入值列表。列表应具有相等的长度(最大长度为max_batch_size )。然后函数必须返回一个元组的列表(即使只有1个输出组件),元组中的每个列表对应一个输出组件。 |
max_batch_size | int | 4 | 如果从队列调用此方法,则最大批处理输入数目。仅在batch=True时相关。 |
preprocess | bool | True | 如果为False,则在运行’fn’之前不会对组件数据进行预处理(例如,如果使用Image 组件以base64字符串形式调用此方法)。 |
postprocess | bool | True | 如果为False,则在将’fn’输出返回给浏览器之前不会对组件数据进行后处理。 |
cancels | dict[str, Any] or list[dict[str, Any]] or None | None | 触发此监听器时要取消的其他事件列表。例如,设置cancels=[click_event]将取消click_event,其中click_event是另一个组件的.click 方法的返回值。尚未运行的函数(或正在迭代的生成器)将被取消,但当前正在运行的函数将被允许完成。 |
every | float or None | None | 在客户端连接打开的同时每隔指定秒数运行此事件。以秒为单位解释。队列必须启用。 |
结论
Gradio库的Radio模块提供了一种简单而强大的单选按钮组件,可以通过change、input和select方法来监听用户的输入和选择。这些方法可以帮助开发人员构建交互式界面,并根据用户的操作实现相应的功能。Gradio库是一个强大的工具,可以用于快速开发具有交互性的应用程序和原型系统。