Gradio中Button用法及事件监听器click方法使用 瞎想乱记 事情是这样的:入职时面试的是Java,简历中写了会python,刚好最近有个小项目需要用Python实现,老板就将这个项目交给了我,我 项目中还
Gradio中Button用法及事件监听器click方法使用瞎想乱记事情是这样的:入职时面试的是Java,简历中写了会python,刚好最近有个小项目需要用Python实现,老板就将这个项目交给了我,我… 项目中还真遇到了好几个坑,分享一下 功能介绍功能很简单,就是一个添加一个按钮,并给这个按钮添加一个监听器,实现click方法(我一个后端搞起了前端,以后请叫我全栈)。 相关代码Gradio的基础不再介绍了,不会的可以去先看看基础 按钮的代码如下:
以上是定义了一个名为“提交”的按钮,我想实现通过点击此按钮实现某个方法,输出一行文字,方法的入参有三个参数 具体代码如下:
稍微解释下这行代码,click是按钮的监听器,当点击“提交”按钮后,会运行函数fun_train_video,这个函数的入参有三个, 分别是:image,video,audio,函数的输出是output_video。 这样的代码pycharm并没有报错,但是在运行时会出下下面的错误
解决方法查了很多资料,包括chatGPT,但是并没有得到理想的答案,问题迟迟没有解决,眼看着项目要交付,着急啊,后来想起了我的研究生室友,人称憨憨,上学时写的一手好python,果断请教,最后得到解决。 其实这个问题的根源是这样的:在监听器click方法中,inputs参数需要传入一个包含输入组件的列表,但是inputs=[image, video, audio]这种写法是包含元组的列表,这个元组包含了输入组件和它的标签,但不是组件本身。 当gradio尝试获取输入组件id的时候,会从元组中获取_id属性,但是元组中没有这个属性,就会抛出异常。 修改代码如下
那就是在第一个参数后边加一个序号,这样gradio就可以找到组件的id了,挺神奇的,更深层的逻辑还有待去了解,问题总算解决了。 |
2019-06-18
2019-07-04
2021-05-23
2021-05-27
2021-05-27