企业可以在哪些网站做免费宣传,烟台做网站联系电话,有口碑的免费网站建设,网站qq一键登录Gradio中Button用法及事件监听器click方法使用
瞎想乱记
事情是这样的#xff1a;入职时面试的是Java#xff0c;简历中写了会python#xff0c;刚好最近有个小项目需要用Python实现#xff0c;老板就将这个项目交给了我#xff0c;我… 项目中还真遇到了好几个坑#…Gradio中Button用法及事件监听器click方法使用
瞎想乱记
事情是这样的入职时面试的是Java简历中写了会python刚好最近有个小项目需要用Python实现老板就将这个项目交给了我我… 项目中还真遇到了好几个坑分享一下
功能介绍
功能很简单就是一个添加一个按钮并给这个按钮添加一个监听器实现click方法我一个后端搞起了前端以后请叫我全栈。
相关代码
Gradio的基础不再介绍了不会的可以去先看看基础 按钮的代码如下
import gradio as grsubmit_button gr.Button(提交)以上是定义了一个名为“提交”的按钮我想实现通过点击此按钮实现某个方法输出一行文字方法的入参有三个参数具体代码如下
image gr.Image(label图片, sources[upload], typefilepath)
video gr.Video(label视频, sources[upload], formatmp4)
audio gr.Audio(label音频, sources[upload])
output_video gr.Text()
submit_button.click(fun_train_video, inputs[image, video, audio], outputsoutput_video)稍微解释下这行代码click是按钮的监听器当点击“提交”按钮后会运行函数fun_train_video这个函数的入参有三个分别是imagevideoaudio函数的输出是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], outputsoutput_video)那就是在第一个参数后边加一个序号这样gradio就可以找到组件的id了挺神奇的更深层的逻辑还有待去了解问题总算解决了。 交差交差老板你做的可以啊后边接着做二期三期吧。我…