← 返回扩展市场
扩展制作教程
一句话:写一个 .py 文件,里面放 register() 函数,返回积木定义列表,就完事了。
最小示例
def register():
return [{
"btype": "hello", # 积木唯一ID,不能和已有积木重名
"cat": "扩展", # 分类名,会出现在积木库的「扩展」分类里
"label": "我的文字", # 积木上显示的名字
"props": [("text", "文字", "text")], # 属性:(键名, 显示名, 类型)
"slots": [], # 子槽,空表示没有嵌套
"defaults": {"text": "你好"}, # 属性默认值
"html_template": "<div>{text}</div>", # 生成的HTML,{text}会被属性值替换
}]
积木定义字段
| 字段 | 说明 |
btype | 积木唯一标识,字符串,不能重复 |
cat | 分类名,自定义分类会自动出现在积木库 |
label | 积木在面板上显示的文字 |
props | 属性列表,每项 (键名, 显示名, 类型),类型可选 text/number/color |
slots | 子槽列表,每项 (槽名, 显示名, [允许的分类]) |
defaults | 属性默认值字典 |
html_template | 简单模板,用 {属性名} 插入值 |
generate | 高级:函数 lambda brick, indent, app: 返回HTML字符串,比模板更灵活 |
css | 可选,注入页面的CSS样式 |
js | 可选,注入页面的JavaScript代码 |
带样式和交互的示例
def register():
return [{
"btype": "clock",
"cat": "扩展",
"label": "实时时钟",
"props": [],
"slots": [],
"defaults": {},
"generate": lambda b, i, app: (" " * i) + '<div class="my-clock"></div>',
"css": ".my-clock{font-size:24px;color:blue;font-family:monospace;}",
"js": "setInterval(function(){document.querySelector('.my-clock').textContent=new Date().toLocaleTimeString();},1000);",
}]
测试方法:保存为 xxx.py → 打开 BrickHTML → 点「🧩 扩展」→「+ 自定义扩展」→ 导入本地 .py → 同意安全确认 → 积木库「扩展」分类里就能看到你的积木了。
注意:扩展以完全权限执行代码,发布到市场前请确保代码安全,不要包含删除文件、窃取数据等恶意操作。