目标

  • [x] 总结Blender面板布局

总结

Blender面板中界面组件是通过UILayout进行组织的. 其主要属性如下:

  • row() 定义横向子布局.
  • column() 定义竖向子布局.
  • split() 按比例拆分行
  • column_flow() 定义多列的竖向子布局(根据列,计算行数, 然后按逐列摆放组件)
  • box() 定义有外框的竖向子布局
  • menu_pie() 饼状菜单
  • operator() 放置调用操作器的按钮
  • prop() 展示RNA,并把它放在布局中
  • label() 显示标签
  • separator() 分隔元素

代码示例

class SimplePanel(bpy.types.Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = "TOOLS"
bl_category = "Test"
bl_label = "测试工具"
bl_context = "objectmode" def draw(self, context):
# Store reference to context.scene
scn = context.scene
# Store reference to self.layout
lay = self.layout
# Create box
box = lay.column_flow(2)
box.operator("object.simple_operator", text="Print #1")
box.prop(scn, 'encouraging_message')
box.operator("object.simple_operator", text="Print #1")
box.prop(scn, 'encouraging_message')
box.operator("object.simple_operator", text="Print #1") # Create another box
box = lay.box()
# Create a row within it
row = box.row()
# We can jam a few things on the same row
row.operator("object.simple_operator", text="Print #2")
row.prop(scn, 'encouraging_message')
# Create yet another box
box = lay.box()
# Create a row just for a label
row = box.row()
row.label('There is a split row below me!')
# Create a split row within it
row = box.row()
splitrow = row.split(percentage=0.2)
# Store references to each column of the split row
left_col = splitrow.column()
right_col = splitrow.column()
left_col.operator("object.simple_operator", text="Print #3")
right_col.prop(scn, 'encouraging_message') # Throw a separator in for white space...
lay.separator()
# We can create columns within rows...
row = lay.row()
col = row.column()
col.prop(scn, 'my_int_prop')
col.prop(scn, 'my_int_prop')
col.prop(scn, 'my_int_prop')
col = row.column()
col.prop(scn, 'my_float_prop')
col.label("I'm in the middle of a column")
col.prop(scn, 'my_float_prop')
# Throw a few separators in...
lay.separator()
lay.separator()
lay.separator()
# Same as above but with boxes...
row = lay.row()
box = row.box()
box.prop(scn, 'my_int_prop')
box.label("I'm in the box, bottom left.")
box = row.box()
box.prop(scn, 'my_bool_prop')
box.operator("object.simple_operator", text="Print #4") @classmethod
def register(cls):
print("Register class: %s" % cls.bl_label) @classmethod
def unregister(cls):
print('Unregister class: %s' % cls.bl_label)

最新文章

  1. SpringMVC的小总结
  2. ueditor .net版本上传图片功能配置
  3. poj1966 求顶点连通度
  4. md5sum
  5. 使用JS对form的内容验证失败后阻止提交 &&js校验表单后提交表单的三种方法总结
  6. RVM 安装&卸载
  7. WinForm中的事件触发机制学习
  8. Swift2.0异常处理
  9. DOM不同的结点类型
  10. XAMPP启动MySQL时报端口被占用错误
  11. 201521123058 java第六次作业
  12. PyCharm 2017 免费 破解 注册 激活 教程(附 License Server 地址)(Python 编辑器 IDE 推荐)
  13. Elastic Stack-Kibana使用介绍(七)
  14. Docker 核心技术之镜像
  15. BUAAOO P5-P7 Elevator Simulation
  16. 配置Tomcat使用https协议(配置SSL协议)
  17. docker容器持久化卷讲解
  18. [c/c++] programming之路(24)、字符串(五)——字符串插入,字符串转整数,删除字符,密码验证,注意事项
  19. 高通移植mipi LCD的过程LK代码
  20. 简单的node 服务端 响应get,返回json数据;

热门文章

  1. php第十五节课
  2. 1040 有几个PAT (25 分)
  3. uva1584 Circular Sequence(Uva-1584)
  4. vue 使用插件
  5. bupt summer training for 16 #5 ——数据结构
  6. Maven学习总结(1)——Maven入门
  7. 清北学堂模拟赛d4t6 c
  8. [bzoj2086][Poi2010]Blocks_单调栈_双指针
  9. 史上最全opencv源代码解读,opencv源代码具体解读文件夹
  10. clear out all variables without closing terminal