当前位置: 首页 > news >正文

Gradio中Button用法及事件监听器click方法使用

Gradio中Button用法及事件监听器click方法使用

瞎想乱记

事情是这样的:入职时面试的是Java,简历中写了会python,刚好最近有个小项目需要用Python实现,老板就将这个项目交给了我,我…
项目中还真遇到了好几个坑,分享一下

功能介绍

功能很简单,就是一个添加一个按钮,并给这个按钮添加一个监听器,实现click方法(我一个后端搞起了前端,以后请叫我全栈)。

相关代码

Gradio的基础不再介绍了,不会的可以去先看看基础
按钮的代码如下

import gradio as grsubmit_button = gr.Button('提交')

以上是定义了一个名为“提交”的按钮,我想实现通过点击此按钮实现某个方法,输出一行文字,方法的入参有三个参数,具体代码如下

image = gr.Image(label="图片", sources=["upload"], type="filepath")
video = gr.Video(label="视频", sources=["upload"], format='mp4')
audio = gr.Audio(label="音频", sources=["upload"])
output_video = gr.Text()
submit_button.click(fun_train_video, inputs=[image, video, audio], outputs=output_video)

稍微解释下这行代码,click是按钮的监听器,当点击“提交”按钮后,会运行函数fun_train_video,这个函数的入参有三个,分别是:image,video,audio,函数的输出是output_video。
这样的代码pycharm并没有报错,但是在运行时会出下下面的错误
“inputs”: [block._id for block in self.inputs],
^^^^^^^^^
AttributeError: ‘tuple’ object has no attribute ‘_id’
在这里插入图片描述

解决方法

查了很多资料,包括chatGPT,但是并没有得到理想的答案,问题迟迟没有解决,眼看着项目要交付,着急啊,后来想起了我的研究生室友,人称憨憨,上学时写的一手好python,果断请教,最后得到解决。
其实这个问题的根源是这样的:在监听器click方法中,inputs参数需要传入一个包含输入组件的列表,但是inputs=[image, video, audio]这种写法是包含元组的列表,这个元组包含了输入组件和它的标签,但不是组件本身。当gradio尝试获取输入组件id的时候,会从元组中获取_id属性,但是元组中没有这个属性,就会抛出异常
修改代码如下

submit_button.click(fun_train_video, inputs=[image[0], video, audio], outputs=output_video)

那就是在第一个参数后边加一个序号,这样gradio就可以找到组件的id了,挺神奇的,更深层的逻辑还有待去了解,问题总算解决了。
交差交差!老板:你做的可以啊,后边接着做二期三期吧。我:…

http://www.lryc.cn/news/363895.html

相关文章:

  • 【Qt秘籍】[005]-Qt的首次邂逅-创建
  • 亚信安慧AntDB:值得信任的数据产品
  • 超越传统AI 新型多智能体系统MESA,探索效率大幅提升
  • [SWPU 2019]神奇的二维码、buuctf部分web题
  • Python正则表达式匹配中文:深入解析与实战应用
  • 实例Python对比两个word文档并找出不同
  • 2.1 QT随手简记(三)
  • TechM-技术网站
  • SpringBoot: 使用GraalVM编译native应用
  • 9. MySQL事务、字符集
  • 为什么要学习数据结构和算法
  • CANoe仿真工程Switch控件关联dbc信号出现的问题及解决思路
  • 用开源模型MusicGen制作六一儿童节专属音乐
  • Ps:批处理
  • 前端框架中的虚拟DOM和实际DOM之间的关系
  • MySQL进阶——SQL性能分析
  • 在RT-Thread下为MPU手搓以太网MAC驱动-4
  • 可的哥(Codigger)推出Monaco编辑器插件,提升编程体验
  • 为什么选择mobx
  • 如何解决段转储问题
  • 【杂谈】AIGC之ChatGPT-与智能对话机器人的奇妙对话之旅
  • CentOS7配置国内清华源并安装docker-ce以及配置docker加速
  • JL-03-Y1 清易易站
  • PipeSer管线管网云服务
  • kubesphere报错
  • 【QT5】<总览二> QT信号槽、对象树及样式表
  • 2024.05.24 校招 实习 内推 面经
  • 如何理解 Java 8 引入的 Lambda 表达式及其使用场景
  • GPT-4与GPT-4O的区别详解:面向小白用户
  • 使用throttle防止按钮多次点击