Unexpected scroll and incorrect cell selection after filtering in `gr.Dataframe`

该报错通常出现在 Gradio gr.Dataframe 使用搜索过滤后点击单元格时,表现为表格异常滚动到顶部/底部、 gr.SelectData 返回错误的行索引或值、以及事件回调响应延迟。优先排查 Gradio 版本是否处于 v5.24.0 至 v5.25.1 区间,并确认是否存在未过滤表的行索

快速结论:该报错通常出现在 Gradio gr.Dataframe 使用搜索过滤后点击单元格时,表现为表格异常滚动到顶部/底部、gr.SelectData 返回错误的行索引或值、以及事件回调响应延迟。优先排查 Gradio 版本是否处于 v5.24.0 至 v5.25.1 区间,并确认是否存在未过滤表的行索引被错误用于选择坐标的问题(该问题由 #10955 引入)。

适用环境:Gradio 5.25.1(Issue 报告确认);最新版本 Gradio 6.25.0 已验证无法复现。操作系统、Python、CUDA、显卡等环境未在 Issue 中提及,无证据未补充。

最快修复方案:升级至 Gradio 最新版本(如 6.25.0),该问题已被修复且无法复现。若无法升级,可尝试回退 Gradio 至 5.24.0 之前的版本,或撤销引入该回归的提交 2bec73b(位于 #10955 中)。

注意事项:回退版本可能会失去其他新功能或修复;当前 Issue 关闭时仅验证了 10,000 行数据集的搜索与点击场景,未覆盖所有可能的边界条件。

问题场景

用户在 Gradio 的 Blocks 应用中使用 gr.Dataframe(开启 show_search="search" 启用搜索过滤功能),当数据集较大(如 10,000 行)时,在搜索框输入关键字过滤后,点击表格中任意可见单元格,会触发一系列异常行为:表格意外滚动到底部、gr.SelectData 事件返回错误的 value/index/row_value,且 gr.SelectData 回调有时需要数秒才能返回结果。

报错原文

Unexpected scroll and incorrect cell selection after filtering in `gr.Dataframe`

原因分析

根据 Issue 评论区开发者分析,该问题是一个回归(regression),由 #10955(v5.24.0)引入。根本原因在于:过滤操作后,选择坐标使用了「未过滤表」的行索引,而非「过滤后可见行」的正确索引,导致 gr.SelectData 返回错误数据和表格异常滚动。同时,回退提交 2bec73b 验证可修复该问题。此外,Issue 作者观察到问题在表格较小(行数少)时不出现,可能与大数据量下排序/过滤的坐标映射逻辑有关。

注意:当前 Issue 关闭时,维护者在最新版本 main(Gradio 6.25.0)上使用原始 10,000 行数据集复测,未能复现问题,说明该行为已被修复。

环境排查

  • 确认 Gradio 版本:5.25.1 为问题报告版本,6.25.0 已验证修复。
  • 确认是否使用 gr.Dataframe 且启用了 show_search="search"(搜索过滤功能)。
  • 确认数据集规模:Issue 中 10,000 行可稳定触发;小表格可能不触发。
  • 确认浏览器/系统环境(Issue 未提及,如可复现需补充记录)。

解决步骤

  1. 优先尝试升级版本:将 Gradio 升级至最新版(如 6.25.0),然后使用 Issue 提供的 10,000 行复现脚本验证问题是否消失。
  2. 若无法升级,且问题影响严重,可尝试回退 Gradio 至 5.24.0 之前的版本(如 5.23.x),以规避 #10955 引入的回归。
  3. 若你使用源码方式安装 Gradio,可尝试回退/撤销 #10955 中的提交 2bec73b(该提交被开发者确认与问题相关),但需评估对整体代码的影响。
  4. 作为临时缓解方案,可尝试在过滤后刷新/重新加载表格数据,或避免过滤后直接点击单元格(如先清空搜索框再点击);但此为推测性方案,未在 Issue 中验证。

验证方法

使用 Issue 中提供的完整复现脚本(含 Markdown 指引),执行以下步骤确认问题已解决:

  • 在搜索框输入 aaaaaaaaaaaaaaaaaaaa(20 个小写 a)。
  • 点击一个可见的结果单元格。
  • 检查表格是否未滚动到底部(无异常跳转)。
  • 检查文本框输出的 evt.valueevt.indexevt.row_value 是否与你点击的单元格一致。
  • 确认回调响应时间恢复正常(不再出现数秒延迟)。

参考来源

gradio-app/gradio #11022

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 19851

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注