
Components don’t become visible with radio button switch event on gradio>=6
快速结论:该问题发生在 Gradio 版本 ≥6 时,通过 Radio 组件切换事件控制其他组件的可见性(`gr.update(visible=…)`)时,首次点击特定选项未能正确更新可见性。优先排查 Gradio 版本,建议升级到 6.20.0 及以上版本。
问题场景
用户在 Gradio 应用中通过 gr.Radio 组件切换选项,利用回调函数 show_species_choice 返回 gr.update(visible=...) 来动态显示或隐藏相邻列的组件(如 gr.Column、gr.File、gr.List)。在 Gradio 5.x(如 5.46.1)下工作正常,但在 Gradio 6.x(如 6.0 及以上)中,切换到第三个 Radio 选项时,目标组件首次未能变为可见,需要再次点击才能正确显示。
报错原文
Components don't become visible with radio button switch event on gradio>=6
实际运行时未抛出 Python 异常,但 UI 行为不符合预期:组件可见性状态在首次切换时未更新。
原因分析
该问题是一个 Gradio 框架自身的 bug,发生在版本 6.0 到 6.19.x 之间。根据 Gradio 官方回复,该问题已在 6.20.0 版本中通过 PR #13553 修复。根本原因可能在于 Gradio 6 中事件触发或组件状态更新的内部逻辑发生了变化,导致 gr.update(visible=...) 在特定场景下(如多个组件同时更新可见性时)首次调用失效。
环境排查
- Gradio 版本:确认当前使用的版本是否为 6.0 至 6.19.x 之间的版本。
- Python 版本:建议使用 Python 3.9 及以上(与 Gradio 兼容性更好)。
- 浏览器:确认问题在不同浏览器(Chrome/Firefox/Edge)中是否复现,以排除前端缓存干扰。
解决步骤
- 首选方案:升级 Gradio 到 6.20.0 或更高版本。根据 Issue 开发者确认,该 bug 已在
6.20.0中被修复。升级后重启 Gradio 应用并重新测试。 - 如果无法立即升级:可优先尝试将 Gradio 临时降级到
5.46.1(用户确认该版本下功能正常)。注意降级可能导致其他新功能缺失或兼容性问题,仅供临时规避。 - 验证回调函数逻辑:检查
show_species_choice是否返回了正确的gr.update列表,确保更新对象的数量与输出组件列表匹配。 - 清理浏览器缓存:在测试过程中,建议使用无痕模式或清除浏览器缓存,避免旧版 Gradio 客户端的缓存干扰。
验证方法
在升级或降级后,运行 Issue 中提供的重现代码,依次点击三个 Radio 选项(特别是第三个 _PREDICT_SPECIES),观察右侧目标组件是否在首次点击时正确显示或隐藏。如果组件可见性变化与预期一致,且无需二次点击,即表示问题已解决。



