news 2026/8/24 10:59:53

ipydatagrid API速查手册:DataGrid、选择器与渲染器属性完整清单(附示例代码)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ipydatagrid API速查手册:DataGrid、选择器与渲染器属性完整清单(附示例代码)

ipydatagrid API速查手册:DataGrid、选择器与渲染器属性完整清单(附示例代码)

【免费下载链接】ipydatagridFast Datagrid widget for the Jupyter Notebook and JupyterLab项目地址: https://gitcode.com/gh_mirrors/ip/ipydatagrid

ipydatagrid 是面向 Jupyter Notebook 与 JupyterLab 的高性能 DataGrid(数据网格)控件。本文把它的三大核心 API —— DataGrid 构建属性、选择器(Selections)接口、单元格渲染器(Renderers)属性 —— 整理成一份完整清单,每个属性都配默认值说明与简短示例代码,方便新手随查随用。

📦 快速开始:三步创建 DataGrid

先安装:

pip install ipydatagrid

最小示例(完整演示见 examples/DataGrid.ipynb 同目录下的examples/DataGrid.ipynb):

import pandas as pd from ipydatagrid import DataGrid df = pd.DataFrame({"A": [1, 2, 3], "B": ["x", "y", "z"]}) grid = DataGrid(df) grid

DataGrid的完整实现位于 ipydatagrid/datagrid.py,所有可从ipydatagrid直接导入的类在 ipydatagrid/init.py 中统一导出。

🧩 DataGrid 构建属性完整清单

属性默认值说明
dataframe必填要展示的 pandas DataFrame
index_name"key"索引列显示名称(仅构造时可设)
base_row_size20默认行高(像素)
base_column_size64默认列宽(像素)
base_row_header_size64行头宽度
base_column_header_size20列头高度
header_visibility"all"表头显示模式:all/row/column/none
selection_mode"none"选择模式:cell/row/column/none
editableFalse是否允许双击单元格编辑(开启后自动切到cell模式)
column_widths{}按列名指定自定义列宽
auto_fit_columnsFalse是否自动按内容适配列宽
auto_fit_params见下方自动适配参数:areaall/body/row-header)、paddingnumCols
grid_styleNone全局网格样式字典,可覆盖背景色、网格线、选中框颜色等
horizontal_stripesFalse启用斑马行(隔行着色)
vertical_stripesFalse启用隔列着色
renderers{}按列名指定渲染器的字典
default_rendererTextRenderer全体单元格的默认渲染器
header_renderer/corner_rendererNone列头 / 左上角单元格的渲染器

示例:自定义布局 + 主题条纹(参考examples/Themes.ipynb):

grid = DataGrid(df, layout={"height": "300px"}, horizontal_stripes=True) grid.auto_fit_params = {"area": "body", "padding": 60, "numCols": 1} grid.auto_fit_columns = True # 列宽自动适配,见 examples/Column Width Auto-Fit.ipynb

🎯 选择器(Selections)API:编程式选区与取值

ipydatagrid的选择模型是"矩形选区"列表,内部以{r1, c1, r2, c2}(左上角到右下角,行列均从 0 开始)表示。相关实现在 ipydatagrid/datagrid.py 的SelectionHelperSelectionIterator类中,交互演示见examples/Selections.ipynb

方法 / 属性说明
select(row1, column1, row2=None, column2=None, clear_mode="none")选中单个单元格或矩形区域;clear_modenone/all/current
clear_selection()清空全部选区
selections选区矩形列表(可双向同步)
selected_cells所有选中单元格,每项为{"r": 行, "c": 列}
selected_cell_values所有选中单元格的值列表
selected_cell_iterator逐个遍历选中单元格(基于完整数据)
selected_visible_cell_iterator遍历当前可见(经筛选/排序后)的选中单元格
get_visible_data()返回当前视图的 DataFrame

快速示例:

grid.select(row1=1, column1=1, row2=2, column2=2, clear_mode="all") # 矩形选区 grid.select(4, 1) # 单个单元格 print(grid.selected_cell_values) # 读取选中值 grid.clear_selection()

💡 提示:按住Ctrl/Cmd拖选可累加选区,按住Shift可在两次点击间选区。

✍️ 单元格读写与事件回调

方法说明
get_cell_value(column, primary_key)/set_cell_value(column, primary_key, value)按"列名 + 主键"读写单个单元格,支持多主键
get_cell_value_by_index(column, row)/set_cell_value_by_index(column, row, value)按"列名 + 行索引"读写
set_row_value(primary_key, values)按主键整行写入
on_cell_change(callback)监听单元格变化,回调参数含rowcolumnvalue
on_cell_click(callback)监听点击,回调参数含regioncolumnrowcell_value
grid.editable = True # 开启就地编辑:双击单元格或输入新值即可修改 grid.set_cell_value("Origin", 4, "Canada") grid.on_cell_change(lambda c: print("changed:", c["row"], c["column"], c["value"]))

编辑与事件回调的完整交互演示见examples/CellEditing.ipynb

🎨 渲染器(Renderers)属性完整清单

全部渲染器定义在 ipydatagrid/cellrenderer.py,效果演示见examples/DataGrid.ipynbexamples/ConditionalFormatting.ipynb

TextRenderer(默认渲染器,其他渲染器的基类):

属性默认值说明
text_valueNone显示文本(值 / Scale / VegaExpr)
text_wrapFalse是否自动换行(优先于省略)
text_elide_direction"right"文本省略方向:right/left
font"12px sans-serif"字体
text_color/background_colordefault_value字色 / 背景色,可传颜色、VegaExprColorScale
vertical_alignment/horizontal_alignmentcenter/left垂直 / 水平对齐
format/format_typeNone/"number"d3 格式串与类型(number/time
missing""缺失值占位文本

BarRenderer(继承 TextRenderer,增加):

属性默认值说明
bar_value0.0条形数值或 Scale(未指定时按列数据自动推断)
bar_color"#4682b4"条形颜色,可用ColorScale做渐变
orientation"horizontal"条形方向
bar_vertical_alignment/bar_horizontal_alignmentbottom/left条形对齐
show_textTrue是否叠加显示文本

其余渲染器

  • HyperlinkRendererurlurl_name两个VegaExpr,单元格渲染为可点击链接(需按住Ctrl/Cmd点击,避免误触选择行为),演示见examples/HyperlinkRenderer.ipynb
  • HtmlRenderer:单元格内渲染 HTML 片段,常用属性与 TextRenderer 一致,演示见examples/HtmlRenderer.ipynb
  • ImageRendererplaceholder(加载占位)、width/height(默认""/100%)、text_colorbackground_color

按列装配渲染器:

from ipydatagrid import DataGrid, BarRenderer, TextRenderer from bqplot import ColorScale renderers = { "Horsepower": BarRenderer(bar_color=ColorScale(min=0, max=200, scheme="viridis")), "Name": TextRenderer(text_color="navy"), } grid = DataGrid(df, renderers=renderers)

🌈 Vega 表达式与条件格式化

VegaExpr/Expr是渲染器属性的"瑞士军刀":传入一个 JS 风格表达式(或 Python 函数),即可让颜色、字体等随cell.valuecell.rowcell.metadata动态变化,实现跨列条件格式化(完整示例见examples/ConditionalFormatting.ipynb)。

from ipydatagrid import VegaExpr, TextRenderer renderer = TextRenderer( background_color=VegaExpr("cell.value < 100 ? 'red' : 'green'") ) grid = DataGrid(df, default_renderer=renderer)

grid_style可用的样式键(优先级高于默认渲染器、低于列渲染器):background_colorrow_background_colorcolumn_background_colorgrid_line_colorheader_background_colorselection_fill_colorselection_border_colorcursor_fill_colorscroll_shadow等,配色示例见examples/Themes.ipynb

⚡ StreamingDataGrid:大数据懒加载

数据量大时用 ipydatagrid/datagrid.py 中的StreamingDataGrid子类:前端只按需向后端拉取视口内的数据,内存占用更低、首屏更快(演示见examples/Streaming.ipynb)。

属性 / 方法说明
debounce_delay视口请求防抖时间(默认 160ms)
tick()通知底层 DataFrame 已变更并刷新(不可在循环中调用)
from ipydatagrid import StreamingDataGrid sgrid = StreamingDataGrid(df, debounce_delay=50) df.update(new_columns) # 数据变更 sgrid.tick() # 触发前端刷新

⚠️ 注意:StreamingDataGrid 依赖活动内核,导出为静态 HTML 后不可用。

📁 核心文件路径一览

文件内容
ipydatagrid/datagrid.pyDataGridStreamingDataGridSelectionHelper实现
ipydatagrid/cellrenderer.pyTextRendererBarRendererHtmlRendererHyperlinkRendererImageRendererVegaExprExpr
ipydatagrid/__init__.py对外导出的全部类
js/core/transformStateManager.ts前端排序/筛选/选区状态管理
examples/*.ipynb全部功能的官方演示 Notebook

以上属性清单覆盖了 ipydatagrid 日常开发中的全部高频 API。建议配合examples/目录下的 Notebook 逐个上手:从Selections.ipynb掌握选区,再到ConditionalFormatting.ipynb玩转 Vega 表达式,即可快速构建出专业级的 Jupyter 数据网格。

【免费下载链接】ipydatagridFast Datagrid widget for the Jupyter Notebook and JupyterLab项目地址: https://gitcode.com/gh_mirrors/ip/ipydatagrid

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 10:59:33

如何用手柄玩魔兽世界:WoWmapper 完整配置教程

如何用手柄玩魔兽世界&#xff1a;WoWmapper 完整配置教程 【免费下载链接】WoWmapper Controller input mapper for World of Warcraft and ConsolePort 项目地址: https://gitcode.com/gh_mirrors/wo/WoWmapper WoWmapper 把 DualShock 4 或 Xbox 手柄接上 Windows 电…

作者头像 李华
网站建设 2026/8/24 10:59:09

城通网盘直连解析:用 ctfileGet 拿到一次性下载地址

城通网盘直连解析&#xff1a;用 ctfileGet 拿到一次性下载地址 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet ctfileGet 是一个免费开源的城通网盘直连解析工具。把分享链接或文件 ID 贴进去&#xf…

作者头像 李华
网站建设 2026/8/24 10:55:49

C++模板型别推导:从auto到完美转发的核心机制解析

1. 项目概述&#xff1a;从“黑盒”到“白盒”的模板型别推导如果你写过C模板&#xff0c;尤其是用过std::vector、std::unique_ptr或者自己定义过函数模板&#xff0c;那你一定对下面这种写法不陌生&#xff1a;template<typename T> void f(T param) {// ... 函数体 }i…

作者头像 李华
网站建设 2026/8/24 10:52:38

C++模板编程深度解析:从泛型基础到元编程实战

1. 项目概述&#xff1a;为什么C模板值得你投入时间深入学习&#xff1f;如果你写过一段时间的C&#xff0c;肯定遇到过这样的场景&#xff1a;你需要一个函数来处理int和double类型的数据&#xff0c;但逻辑完全一样。新手可能会写两个重载函数&#xff0c;稍微有经验的会想到…

作者头像 李华