主要UI布局

  • row 横向切分
    • align 紧贴
  • column 竖向切分
    • align 紧贴
  • split 自定义横向切分
    • factor 切分比例
    • align 紧贴
  • box 打个框框

    主要UI布局修改

  • scale_x 修改横向缩放

  • scale_y 修改竖向缩放
  • use_property_split 缩到右边
  • use_property_decorate 缩到右边后不显示k帧小按钮

    主要UI类型

  • label 标签

    • 常用属性
      • text 输入的文字,须是字符串类型
      • icon 可选图标
  • prop 属性
    • 常用属性
      • text 同上
      • data 数据
      • property 要暴露的属性名字(标识符)
      • slider 滑块
    • 其他属性
      • expand 多用于枚举项
      • toggle 用于布尔
      • invert_checkbox 布尔反转
      • emboss 只显示文本不显示框
  • operator
    • 常用属性
      • operator 操作符的唯一标识符
      • text 同上
      • icon 同上
    • 其他属性
      • emboss 同上

        示例

        ```python import bpy

指定UI在面板上绘制

class HelloWorldPanel(bpy.types.Panel): “””Creates a Panel in the Object properties window””” #这个是面板注释 bl_label = “Hello World Panel” #面板的名字 bl_idname = “OBJECT_PT_hello” #唯一标识符,不可重复 bl_space_type = ‘PROPERTIES’ #在属性面板绘制 bl_region_type = ‘WINDOW’ bl_context = “object” #属性窗口下的物体选项卡

  1. #主要绘制部分
  2. def draw(self, context):
  3. layout = self.layout
  4. # 获取当前激活物体
  5. obj = context.active_object
  6. # 切分面板
  7. row = layout.row()
  8. # 添加标签2
  9. row.label(text="这里是标签1", icon='WORLD_DATA')
  10. # 添加标签2
  11. row = layout.row()
  12. row.label(text="这里是标签2,激活物体名字是: " + obj.name)
  13. # 暴露属性
  14. row = layout.row()
  15. row.prop(obj, "name")
  16. # 暴露操作符按钮
  17. row = layout.row()
  18. row.operator("mesh.primitive_cube_add")

注册

def register(): bpy.utils.register_class(HelloWorldPanel)

def unregister(): bpy.utils.unregister_class(HelloWorldPanel)

运行注册

if name == “main“: register()

```


作业1

在属性面板的场景选项卡下,绘制一个面板(面板标题为’作业1‘)
面板与布局内容如下:
image.png
标签(当前物体的名字)
属性(当前物体的位置,使用竖向排布,并加上一个小logo)
属性(当前场景的x,y分辨率,使用横向排布)
操作符(渲染静帧f12的小按钮,文字‘点此渲染’)


文件下载 作业起始文件.py (可选) 作业答案.py