在NiceGUI集成的AG Grid中实现单元格值变更红色闪烁效果的问题
在NiceGUI集成的AG Grid中实现单元格值变更红色闪烁效果的问题
看起来你已经尝试了不少配置来实现AG Grid的单元格闪烁,但一直没达到预期效果。我帮你调整了代码,现在可以完美实现Score列值变更时的红色闪烁效果,下面是完整的解决方案:
完整可运行代码
from nicegui import ui import pandas as pd, random # 1) 注入脚本注册AG Grid的HighlightChanges模块 ui.add_head_html(''' <script> // 从NiceGUI已加载的agGrid中获取模块注册器和高亮变更模块 const { ModuleRegistry, HighlightChangesModule } = window.agGrid; ModuleRegistry.registerModules([HighlightChangesModule]); </script> ''') # 2) 自定义红色闪烁样式,覆盖默认的绿色效果 ui.add_head_html(''' <style> .ag-theme-alpine .ag-cell-data-changed { background-color: red !important; color: white !important; transition: background-color 0.5s ease; } </style> ''') # 3) 初始化示例数据 df = pd.DataFrame({'id':[0,1,2], 'name': ['Alice','Bob','Charlie'], 'score': [10,20,30]}) previous_df = df.copy() # 4) 创建AG Grid并配置关键参数 with ui.column().classes('w-full ag-theme-alpine'): grid = ui.aggrid({ "columnDefs": [ {"field": "id"}, {"field": "name"}, {"field": "score", "enableCellChangeFlash": True} # 为Score列开启闪烁 ], "rowData": df.to_dict("records"), "animateRows": True, "cellFlashDelay": 500, # 闪烁开始前的延迟(毫秒) "cellFadeDelay": 1000, # 闪烁淡出的时长(毫秒) "deltaRowDataMode": True, # 启用增量数据模式,自动检测行数据变更 "getRowId": "js:function(params) { return params.data.id; }", # 指定行唯一标识,确保变更检测准确 }) # 5) 更新分数并触发闪烁的函数 def update_scores(): global df, previous_df previous_df = df.copy() # 随机更新分数 df['score'] = [random.randint(0,100) for _ in df.index] # 更新网格数据 grid.options['rowData'] = df.to_dict('records') grid.update() # 可选:手动触发指定单元格闪烁(如果自动闪烁不生效时用) # changed_cells = [] # for idx in df.index: # if df.at[idx, 'score'] != previous_df.at[idx, 'score']: # changed_cells.append({'rowIndex': idx, 'column': 'score'}) # grid.run_method('api.flashCells', {'cells': changed_cells}) # 6) 添加触发更新的按钮 ui.button('Update Scores', on_click=update_scores) ui.run(host="127.0.0.1")
关键实现要点解析
- 注册HighlightChanges模块:AG Grid的单元格闪烁功能依赖
HighlightChangesModule,但NiceGUI默认没有加载这个模块,这是之前没触发闪烁的核心原因之一,必须通过ui.add_head_html注入脚本手动注册。 - 自定义闪烁样式:AG Grid默认的闪烁是绿色,我们通过CSS覆盖
.ag-cell-data-changed类的样式,把背景改成红色并添加过渡动画,让闪烁效果更平滑自然。 - 配置AG Grid核心参数:
deltaRowDataMode: True:启用增量数据模式后,AG Grid会自动对比新旧数据,检测出变更的单元格并自动触发闪烁。getRowId:必须指定行的唯一标识(这里用id字段),否则AG Grid无法准确识别哪一行的数据发生了变化,闪烁也就无从谈起。enableCellChangeFlash: True:在Score列的定义中单独开启单元格闪烁功能,确保只有该列的变更会触发闪烁。
- 数据更新逻辑:更新数据后调用
grid.update()让AG Grid刷新视图,启用增量模式后会自动触发闪烁;如果自动闪烁偶尔不生效,也可以手动通过api.flashCells方法指定要闪烁的单元格。
内容来源于stack exchange
相关产品推荐
相关产品推荐

