gradio库中的Dropdown模块:创建交互式下拉菜单

news2024/9/23 5:23:02

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️

👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈

博主原文链接:https://www.yourmetaverse.cn/nlp/375/

请添加图片描述

(封面图由文心一格生成)

gradio库中的Dropdown模块:创建交互式下拉菜单

在构建交互式用户界面时,选择合适的输入组件对于提供良好的用户体验非常重要。gradio库中的Dropdown模块提供了创建下拉菜单的功能,使用户可以从多个选项中进行选择。本文将介绍gradio库中的Dropdown模块以及其常用的四个方法:change、input、blur和select。

Dropdown模块介绍

Dropdown模块是gradio库中的一个组件,用于创建下拉菜单。通过提供一个选项列表,用户可以从中选择一个选项作为输入。下拉菜单的选项可以是字符串,也可以是索引。

在交互过程中,当用户选择下拉菜单的选项时,组件会将所选选项的值作为字符串或索引传递给函数进行处理。同时,函数需要返回与所选选项对应的字符串作为输出。

Dropdown模块还提供了一些参数用于定制化组件的外观和行为,如默认选项、是否允许多选、最大选项数等。

change方法

change方法是Dropdown模块的一个监听器方法,当组件的值发生变化时触发。这个变化可以是用户输入导致的(例如用户在文本框中输入内容),也可以是函数更新导致的(例如图像从事件触发的输出中接收到一个值)。change方法通常用于在Gradio Blocks中使用。

input方法

input方法是Dropdown模块的另一个监听器方法,当用户改变组件的值时触发。这个方法主要用于在Gradio Blocks中使用。

blur方法

blur方法是Dropdown模块的一个监听器方法,当组件失去焦点时(例如用户在文本框外单击)触发。这个方法也可以在Gradio Blocks中使用。

select方法

select方法是Dropdown模块的一个事件监听器,当用户选择下拉菜单的选项时触发。该方法使用gradio.SelectData事件数据传递选项的标签值和索引。

示例

以下是使用Dropdown模块创建交互界面的示例代码:

import gradio as gr


def sentence_builder(quantity, animal, countries, place, activity_list, morning):
    return f"""The {quantity} {animal}s from {" and ".join(countries)} went to the {place} where they {" and ".join(activity_list)} until the {"morning" if morning else "night"}"""


demo = gr.Interface(
    sentence_builder,
    [
        gr.Slider(2, 20, value=4, label="Count", info="Choose between 2 and 20"),
        gr.Dropdown(
            ["cat", "dog", "bird"], label="Animal", info="Will add more animals later!"
        ),
        gr.CheckboxGroup(["USA", "Japan", "Pakistan"], label="Countries", info="Where are they from?"),
        gr.Radio(["park", "zoo", "road"], label="Location", info="Where did they go?"),
        gr.Dropdown(
            ["ran", "swam", "ate", "slept"], value=["swam", "slept"], multiselect=True, label="Activity", info="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed auctor, nisl eget ultricies aliquam, nunc nisl aliquet nunc, eget aliquam nisl nunc vel nisl."
        ),
        gr.Checkbox(label="Morning", info="Did they do it in the morning?"),
    ],
    "text",
    examples=[
        [2, "cat", ["Japan", "Pakistan"], "park", ["ate", "swam"], True],
        [4, "dog", ["Japan"], "zoo", ["ate", "swam"], False],
        [10, "bird", ["USA", "Pakistan"], "road", ["ran"], False],
        [8, "cat", ["Pakistan"], "zoo", ["ate"], True],
    ]
)

if __name__ == "__main__":
    demo.launch()

参数详解

Dropdown模块参数介绍

参数数据类型默认值描述
choiceslist[str] | NoneNone可选择的选项列表。
valuestr | list[str] | Callable | NoneNone默认选中的值。如果为None,则没有默认选中值。如果为可调用对象,则在应用程序加载时调用该函数以设置组件的初始值。
typestr“value”组件返回的值的类型。"value"返回选择的字符串,"index"返回选择的索引。
multiselectbool | NoneNone如果为True,则可以选择多个选项。
max_choicesint | NoneNone可选择的最大选项数。如果为None,则不限制数量。
labelstr | NoneNone接口中的组件名称。
infostr | NoneNone其他组件描述。
everyfloat | NoneNone如果’value’是可调用对象,则在客户端连接打开时每隔一段时间运行一次该函数。仅当启用队列时才有效。
show_labelboolTrue如果为True,则显示标签。
containerboolTrue如果为True,则在容器中放置组件,提供一些额外的边框间距。
scaleint | NoneNone相对于同一行中相邻组件的宽度比例。例如,如果组件A的scale=2,组件B的scale=1,则A的宽度是B的两倍。应为整数。
min_widthint160最小像素宽度,如果屏幕空间不足以满足此值,则换行。如果某个scale值导致该组件宽度小于min_width,则首先尊重min_width参数。
interactivebool | NoneNone如果为True,则可以选择该下拉菜单中的选项;如果为False,则禁用选择。如果未提供,则根据组件用作输入还是输出进行推断。
visibleboolTrue如果为False,则隐藏组件。
elem_idstr | NoneNone可选字符串,将其分配为该组件在HTML DOM中的id。可用于定位CSS样式。
elem_classeslist[str] | str | NoneNone可选字符串列表,将其分配为该组件在HTML DOM中的类。可用于定位CSS样式。
allow_custom_valueboolFalse如果为True,则允许用户输入不在选择列表中的自定义值。

change参数介绍

参数数据类型默认值描述
fnCallable | Nonerequired要封装为接口的函数,通常是机器学习模型的预测函数。函数的每个参数对应一个输入组件,函数应返回单个值或值的元组,元组中的每个元素对应一个输出组件。
inputsComponent | list[Component] | set[Component] | NoneNone用作输入的组件列表。如果函数不需要输入,则应为空列表。
outputsComponent | list[Component] | NoneNone用作输出的组件列表。如果函数不返回输出,则应为空列表。
api_namestr | NoneNone定义此参数会在api文档中公开端点。
status_trackerNoneNone
scroll_to_outputboolFalse如果为True,则在完成时滚动到输出组件。
show_progressLiteral[‘full’] | Literal[‘minimal’] | Literal[‘hidden’]“full”如果为True,则在等待期间显示进度动画。
queuebool | NoneNone如果为True,则将请求放入队列中(如果启用了队列)。如果为False,则不将此事件放入队列中,即使启用了队列。如果为None,则使用gradio应用程序的队列设置。
batchboolFalse如果为True,则函数应处理一批输入,这意味着它应接受每个参数的输入值列表。列表的长度应相等(最多为max_batch_size的长度)。然后,函数必须返回一个元组列表(即使只有一个输出组件),元组中的每个列表对应一个输出组件。
max_batch_sizeint4如果从队列中调用此方法(只适用于batch=True),则将最大批处理在一起的输入数。
preprocessboolTrue如果为False,则在运行’fn’之前不运行组件数据的预处理(例如,如果使用Image组件调用此方法,则保留其作为base64字符串)。
postprocessboolTrue如果为False,则在将’fn’输出返回到浏览器之前不运行组件数据的后处理。
cancelsdict[str, Any] | list[dict[str, Any]] | NoneNone另一个事件被触发时,取消该事件的列表。例如,设置cancels=[click_event]将取消click_event,其中click_event是另一个组件的.click方法的返回值。尚未运行的函数(或正在迭代的生成器)将被取消,但当前正在运行的函数将被允许完成。
everyfloat | NoneNone在客户端连接打开时每隔一段时间运行此事件。以秒为单位。仅在启用队列时才有效。

input参数介绍

参数数据类型默认值描述
fnCallable | Nonerequired要封装为接口的函数,通常是机器学习模型的预测函数。函数的每个参数对应一个输入组件,函数应返回单个值或值的元组,元组中的每个元素对应一个输出组件。
inputsComponent | list[Component] | set[Component] | NoneNone用作输入的组件列表。如果函数不需要输入,则应为空列表。
outputsComponent | list[Component] | NoneNone用作输出的组件列表。如果函数不返回输出,则应为空列表。
api_namestr | NoneNone定义此参数会在api文档中公开端点。
status_trackerNoneNone
scroll_to_outputboolFalse如果为True,则在完成时滚动到输出组件。
show_progressLiteral[‘full’] | Literal[‘minimal’] | Literal[‘hidden’]“full”如果为True,则在等待期间显示进度动画。
queuebool | NoneNone如果为True,则将请求放入队列中(如果启用了队列)。如果为False,则不将此事件放入队列中,即使启用了队列。如果为None,则使用gradio应用程序的队列设置。
batchboolFalse如果为True,则函数应处理一批输入,这意味着它应接受每个参数的输入值列表。列表的长度应相等(最多为max_batch_size的长度)。然后,函数必须返回一个元组列表(即使只有一个输出组件),元组中的每个列表对应一个输出组件。
max_batch_sizeint4如果从队列中调用此方法(只适用于batch=True),则将最大批处理在一起的输入数。
preprocessboolTrue如果为False,则在运行’fn’之前不运行组件数据的预处理(例如,如果使用Image组件调用此方法,则保留其作为base64字符串)。
postprocessboolTrue如果为False,则在将’fn’输出返回到浏览器之前不运行组件数据的后处理。
cancelsdict[str, Any] | list[dict[str, Any]] | NoneNone另一个事件被触发时,取消该事件的列表。例如,设置cancels=[click_event]将取消click_event,其中click_event是另一个组件的.click方法的返回值。尚未运行的函数(或正在迭代的生成器)将被取消,但当前正在运行的函数将被允许完成。
everyfloat | NoneNone在客户端连接打开时每隔一段时间运行此事件。以秒为单位。仅在启用队列时才有效。

blur参数介绍

参数数据类型默认值描述
fnCallable | Nonerequired要封装为接口的函数,通常是机器学习模型的预测函数。函数的每个参数对应一个输入组件,函数应返回单个值或值的元组,元组中的每个元素对应一个输出组件。
inputsComponent | list[Component] | set[Component] | NoneNone用作输入的组件列表。如果函数不需要输入,则应为空列表。
outputsComponent | list[Component] | NoneNone用作输出的组件列表。如果函数不返回输出,则应为空列表。
api_namestr | NoneNone定义此参数会在api文档中公开端点。
status_trackerNoneNone
scroll_to_outputboolFalse如果为True,则在完成时滚动到输出组件。
show_progressLiteral[‘full’] | Literal[‘minimal’] | Literal[‘hidden’]“full”如果为True,则在等待期间显示进度动画。
queuebool | NoneNone如果为True,则将请求放入队列中(如果启用了队列)。如果为False,则不将此事件放入队列中,即使启用了队列。如果为None,则使用gradio应用程序的队列设置。
batchboolFalse如果为True,则函数应处理一批输入,这意味着它应接受每个参数的输入值列表。列表的长度应相等(最多为max_batch_size的长度)。然后,函数必须返回一个元组列表(即使只有一个输出组件),元组中的每个列表对应一个输出组件。
max_batch_sizeint4如果从队列中调用此方法(只适用于batch=True),则将最大批处理在一起的输入数。
preprocessboolTrue如果为False,则在运行’fn’之前不运行组件数据的预处理(例如,如果使用Image组件调用此方法,则保留其作为base64字符串)。
postprocessboolTrue如果为False,则在将’fn’输出返回到浏览器之前不运行组件数据的后处理。
cancelsdict[str, Any] | list[dict[str, Any]] | NoneNone另一个事件被触发时,取消该事件的列表。例如,设置cancels=[click_event]将取消click_event,其中click_event是另一个组件的.click方法的返回值。尚未运行的函数(或正在迭代的生成器)将被取消,但当前正在运行的函数将被允许完成。
everyfloat | NoneNone在客户端连接打开时每隔一段时间运行此事件。以秒为单位。仅在启用队列时才有效。

select参数介绍

参数数据类型默认值描述
fnCallable | Nonerequired要封装为接口的函数,通常是机器学习模型的预测函数。函数的每个参数对应一个输入组件,函数应返回单个值或值的元组,元组中的每个元素对应一个输出组件。
inputsComponent | list[Component] | set[Component] | NoneNone用作输入的组件列表。如果函数不需要输入,则应为空列表。
outputsComponent | list[Component] | NoneNone用作输出的组件列表。如果函数不返回输出,则应为空列表。
api_namestr | NoneNone定义此参数会在api文档中公开端点。
status_trackerNoneNone
scroll_to_outputboolFalse如果为True,则在完成时滚动到输出组件。
show_progressLiteral[‘full’] | Literal[‘minimal’] | Literal[‘hidden’]“full”如果为True,则在等待期间显示进度动画。
queuebool | NoneNone如果为True,则将请求放入队列中(如果启用了队列)。如果为False,则不将此事件放入队列中,即使启用了队列。如果为None,则使用gradio应用程序的队列设置。
batchboolFalse如果为True,则函数应处理一批输入,这意味着它应接受每个参数的输入值列表。列表的长度应相等(最多为max_batch_size的长度)。然后,函数必须返回一个元组列表(即使只有一个输出组件),元组中的每个列表对应一个输出组件。
max_batch_sizeint4如果从队列中调用此方法(只适用于batch=True),则将最大批处理在一起的输入数。
preprocessboolTrue如果为False,则在运行’fn’之前不运行组件数据的预处理(例如,如果使用Image组件调用此方法,则保留其作为base64字符串)。
postprocessboolTrue如果为False,则在将’fn’输出返回到浏览器之前不运行组件数据的后处理。
cancelsdict[str, Any] | list[dict[str, Any]] | NoneNone另一个事件被触发时,取消该事件的列表。例如,设置cancels=[click_event]将取消click_event,其中click_event是另一个组件的.click方法的返回值。尚未运行的函数(或正在迭代的生成器)将被取消,但当前正在运行的函数将被允许完成。
everyfloat | NoneNone在客户端连接打开时每隔一段时间运行此事件。以秒为单位。仅在启用队列时才有效。

结语

本文介绍了gradio库中的Dropdown模块以及其常用的四个方法:change、input、blur和select。通过使用Dropdown模块,我们可以创建交互式下拉菜单,并为应用程序提供更多的选择和功能。希望本文对您理解和使用gradio库中的Dropdown模块有所帮助!


❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️

👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/708088.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2020年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题——纯享题目版

🏠个人主页:fo安方的博客✨ 💂个人简历:大家好,我是fo安方,考取过HCIE Cloud Computing、CCIE Security、CISP等证书。🐳 💕兴趣爱好:b站天天刷,题目常常看&a…

编译原理期末复习简记(更新中~)

注意:该复习简记只是针对我校期末该课程复习纲要进行的,仅供参考 第一章 引论 编译程序是什么? 编译程序是一个涉及分析和综合的复杂系统 编译程序组成 编译程序通常由以下内容组成 词法分析器 输入 组成源程序的字符串输出 记号/单词序列语法…

Jenkins+Gitlab+Springboot项目部署Jar和image两种方式

Springboot环境准备 利用spring官网快速创建springboot项目。 添加一个controller package com.example.demo;import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController public class…

新华三眼中的AI天路

ChatGPT的火爆,在全球范围内掀起了新一轮的AI风暴。如今,各行各业都在讨论AI,各个国家都在密集进行新一轮的AI基础设施建设与技术投入。 但眼前的盛景并非突然到来,就拿这一轮大模型热潮来说,谷歌早在2018年底就发布了…

协议速攻 IIC协议详解

介绍 IIC是一种 同步 半双工 串行 总线 同步 指的是同一根时钟线(SCL) 半双工 可以进行双向通信,但是收发不能同时进行,发的时候禁止接收,接的时候禁止发送 串行 数据是一位一位发送的 总线 两根线(SCL SDA)可以接多个IIC类型器件&#…

《统计学习方法》——逻辑斯蒂回归和最大熵模型

参考资料: 《统计学习方法》李航通俗理解信息熵 - 知乎 (zhihu.com)拉格朗日函数为什么要先最大化? - 知乎 (zhihu.com) 1 逻辑斯蒂回归 1.1 逻辑斯蒂回归 输入 x ( x ( 1 ) , x ( 2 ) , ⋯ , x ( n ) , 1 ) T x(x^{(1)},x^{(2)},\cdots,x^{(n)},1…

【动态规划算法练习】day11

文章目录 一、1312. 让字符串成为回文串的最少插入次数1.题目简介2.解题思路3.代码4.运行结果 二、1143. 最长公共子序列1.题目简介2.解题思路3.代码4.运行结果 三、1035. 不相交的线1.题目简介2.解题思路3.代码4.运行结果 总结 一、1312. 让字符串成为回文串的最少插入次数 1…

DevOps系列文章之 设计一个简单的DevOps系统

前置条件 gitlab gitlab-runner k8s docker 1. gitlab创建群组 创建群组的好处是,对项目进行分组,群组内的资源可以共享,这里创建了一个tibos的群组 2. 在群组创建一个项目 这里创建一个空白项目,项目名为Gourd.Test,将项目克隆到本地,然后在该目录下创建一个.net core3.1的w…

Spring Cloud Alibaba Seata源码分析

目录 一、Seata源码分析 1、Seata源码入口 1.1、2.0.0.RELEASE 1.2、2.2.6.RELEASE 2、Seata源码分析-2PC核心源码 3、Seata源码分析-数据源代理 3.1、数据源代理DataSourceProxy 4、Seata源码分析- Seata服务端(TC)源码 一、Seata源码分析 Sea…

P1dB、IIP3、OIP3、IMD定义及关系

P1dB 1分贝压缩输出功率。放大器有一个线性动态范围,在这个范围内,放大器的输出功率随输入功率线性增加。随着输入功率的继续增加,放大器进入非线性区,其输出功率不再随输入功率的增加而线性增加,也就是说,…

【新星计划·2023】Linux文件权限讲解

作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 前言 这篇文章,将带你详细的了解一下 Linux 系统里面有哪些重要的文件?。 不过,每个文件都有相当多的属性…

ROS学习篇之传感器(二)IMU(超核IMU HI266)

文章目录 一.确定IMU型号二.安装驱动1.找到驱动的包2.解压该压缩包3.安装步骤说明4.具体安装5.检查IMU的usb接口是否插到电脑 三.在RVIZ中的显示1.复制示例下的src里的文件复制到自己的src下2.自己的文件目录3.尝试编译一下4.示例的文件说明5.运行Demo6.配置Rviz 四.查看IMU的实…

【深入了解系统性能优化】「实战技术专题」全方面带你透彻探索服务优化技术方案(系统服务调优)

全方面带你透彻探索服务优化技术方案(服务器系统性能调优) 调优意义计划分析 流程相关分析优化分析Nginx请求服务日志将请求热度最高的接口进行优化异步调用优化方式注意要点 分析调用链路追踪体系建立切面操作分析性能和数据统计存储相关的调用以及耗时…

Pycharm中画图警告:MatplotlibDeprecationWarning

前言: \textcolor{Green}{前言:} 前言: 💞这是由于在python中画图出现的问题,一般不会有错。因为它只是个警告,但是我们也可以知道解决这个问题的方法,防止后面出问题的时候知道怎么解决。 前因…

窗口函数 OVER(PARTITION BY ...)

开窗函数的语法结构:分析函数() over(partition by 分组列名 order by 排序列名 rows between 开始位置 and 结束位置) over()函数中包括三个函数:分区partition by 列名、排序order by 列名、指定窗口范围rows between 开始位置 and 结束位置 rows bet…

Win10共享文件|文件夹 电脑之间快速传输文件的方法

一、设置共享的文件或文件夹 1、A电脑上的文件要共享 进行如下设置: 右击要共享的就文件或文件夹->属性->"共享 "选项卡->"共享"按扭->选择共享的用户 下拉选择"Everyone"->单击"添加"按扭->根据需要设…

PVE8.0内核构建支持IOMMU拆分

PVE直通SATA控制器给群晖的时候,发现网卡、USB、SATA控制器都在一个IOMMU上。 直通完了,PVE直接失联了。这肯定不行。百度了一下说是要编译内核把IOMMU拆开。下面记录一下编译内核的过程。 准备编译环境 我直接用pve物理机编译,怕破坏环境的…

【Spring/Java项目】如何利用swagger-parser解析yaml中的api请求类型、注释、接口名等等(含示例代码)

手打不易,如果转摘,请注明出处! 注明原文:https://zhangxiaofan.blog.csdn.net/article/details/129167371 目录 前言 官方文档 项目配置 示例代码 测试文件 解析代码 运行结果 前言 用到这个工具是因为项目需要&#xff0…

构造函数与成员变量初始化

1 为何需要定义构造函数? 构造函数的主要目的在于对成员变量进行初始化,确保类对象具有良好的初始状态。 2 构造函数对成员变量的初始化 接下来,我们将完善前文中提到的几个构造函数,使其能够有效地完成成员变量的初始化工作。 …

【趣说冒泡排序】

前言 在计算机科学中,排序算法是一种常见且重要的算法。排序算法的目标是将一组无序的数据按照一定的规则进行重新排列,以便更方便地进行搜索、查找或其他操作。 冒泡排序(Bubble Sort)是最简单的排序算法之一,它的原…