
gr.render() cannot react in gradio5.47.2, which worked in the 5.38.0
快速结论:Gradio 5.47.2 中 @gr.render 装饰器内的交互组件(如 gallery.select 绑定的回调)不再响应,但在 5.38.0 中工作正常。在 Gradio 6.19.0(及可能的更高版本)中该问题已被修复,建议升级 Gradio 版本。
问题场景
用户在使用 Gradio 的 @gr.render 装饰器构建动态 UI 时,在 5.38.0 版本下 gallery.select 事件可以触发回调并更新 ImageEditor,但升级到 5.47.2 后,页面无法响应用户操作(如点击 Gallery 中的图片)。
报错原文
gr.render() cannot react in gradio5.47.2, which worked in the 5.38.0
(无控制台错误日志)
原因分析
可能原因:Gradio 5.x 版本间对 @gr.render 内部组件的事件绑定机制存在回归(regression),导致动态渲染的组件无法正常注册事件监听器。在 Gradio 6.19.0 中,该问题已被修复,使用官方最小复现代码验证,@gr.render 能正常响应 Radio 变化。
环境排查
- 确认 Gradio 版本:5.38.0 → 工作正常;5.47.2 → 出现问题
- 根据官方回复,Gradio 6.19.0 可正常使用
@gr.render - 注意:如果计划升级到 6.x,需检查 API 变更,例如
gr.ImageEditor不再接受show_fullscreen_button参数(改用buttons参数)
解决步骤
- 可优先尝试:将 Gradio 升级到最新稳定版(如 6.19.0 或更高),因为官方确认该版本中
@gr.render的响应性已修复。 - 升级后,检查代码中是否有已弃用的参数(如
show_fullscreen_button在 6.x 中需移除或改用buttons),否则会抛出TypeError。 - 如果无法升级,可考虑将
@gr.render内的交互逻辑分离到gr.Blocks顶层,使用更传统的事件绑定方式作为临时方案。
验证方法
升级后运行原始复现代码,测试 Radio 切换后 ImageEditor 是否重新渲染,以及 gallery.select 事件是否能够正常触发回调并更新组件。同时检查浏览器控制台和服务器日志是否有错误输出。



