Blender的插件開發-Panel面板

工具欄面板

先建立一個簡單的面板。
node

import bpy

class View3DPanel():
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'TOOLS'

    @classmethod
    def poll(cls, context):
        return (context.object is not None)

class PanelOne(View3DPanel, bpy.types.Panel):
    bl_idname = "VIEW3D_PT_test_1"
    bl_label = "Panel One"

    def draw(self, context):
        self.layout.label("Small Class")

class PanelTwo(View3DPanel, bpy.types.Panel):
    bl_idname = "VIEW3D_PT_test_2"
    bl_label = "Panel Two"

    def draw(self, context):
        self.layout.label("Also Small Class")

bpy.utils.register_class(PanelOne)
bpy.utils.register_class(PanelTwo)

到工具面板欄的"Misc",能夠看見建立的面板。shell

對象屬性面板

對象屬性面板的一個簡單的例子:瀏覽器

import bpy

class ObjectSelectPanel(bpy.types.Panel):
    bl_idname = "OBJECT_PT_select"
    bl_label = "Select"
    bl_space_type = 'PROPERTIES'
    bl_region_type = 'WINDOW'
    bl_context = "object"
    bl_options = {'DEFAULT_CLOSED'}

    @classmethod
    def poll(cls, context):
        return (context.object is not None)

    def draw_header(self, context):
        layout = self.layout
        obj = context.object
        layout.prop(obj, "select", text="")

    def draw(self, context):
        layout = self.layout

        obj = context.object
        row = layout.row()
        row.prop(obj, "hide_select")
        row.prop(obj, "hide_render")

        box = layout.box()
        box.label("Selection Tools")
        box.operator("object.select_all").action = 'TOGGLE'
        row = box.row()
        row.operator("object.select_all").action = 'INVERT'
        row.operator("object.select_random")

bpy.utils.register_class(ObjectSelectPanel)

面板對象的屬性域   

對用到的各個域說明以下:
dom

class bpy.types.Panel(bpy_struct)
Panel containing UI elements:

bl_category
    Type:string, default 「」, (never None)
bl_context
    Type:string, default 「」, (never None)   
    The context in which the panel belongs to. 
    (TODO: explain the possible combinations bl_context/bl_region_type/bl_space_type)   
bl_idname
    Type:string, default 「」, (never None)  
    If this is set, the panel gets a custom ID, otherwise it takes 
    the name of the class used to define the panel. For example, if the 
    class name is 「OBJECT_PT_hello」, and bl_idname is not set by the script,
    then bl_idname = 「OBJECT_PT_hello」
bl_label
    Type:string, default 「」, (never None) 
    The panel label, shows up in the panel header at the right of the triangle 
    used to collapse the panel。
bl_options
    Options for this panel type
    DEFAULT_CLOSED Default Closed, Defines if the panel has to be open or collapsed 
    at the time of its creation.
HIDE_HEADER
    Hide Header, If set to False, the panel shows a header, which contains a
     clickable arrow to collapse the panel and the label (see bl_label).
    Type:enum set in {‘DEFAULT_CLOSED’, ‘HIDE_HEADER’}, default {‘DEFAULT_CLOSED’}    
bl_region_type
    The region where the panel is going to be used in
    Type:enum in [‘WINDOW’, ‘HEADER’, ‘CHANNELS’, ‘TEMPORARY’, 
    ‘UI’, ‘TOOLS’, ‘TOOL_PROPS’, ‘PREVIEW’], default ‘WINDOW’    
bl_space_type
    Type:enum in [‘EMPTY’, ‘VIEW_3D’, ‘TIMELINE’, ‘GRAPH_EDITOR’, ‘DOPESHEET_EDITOR’,
     ‘NLA_EDITOR’, ‘IMAGE_EDITOR’, ‘SEQUENCE_EDITOR’, ‘CLIP_EDITOR’, 
    ‘TEXT_EDITOR’, ‘NODE_EDITOR’, ‘LOGIC_EDITOR’, ‘PROPERTIES’, ‘OUTLINER’, 
    ‘USER_PREFERENCES’, ‘INFO’, ‘FILE_BROWSER’, ‘CONSOLE’], default ‘EMPTY’  
    面板的space域是一枚舉值,可用的屬性值以下:
    EMPTY:空值。
    VIEW_3D:三維視口。
    TIMELINE:時間線和回放控制。
    GRAPH_EDITOR:Graph編輯器,關鍵幀編輯。
    DOPESHEET_EDITOR:Dope Sheet, 關鍵幀調節。
    NLA_EDITOR:NLA Editor, 合併和層操做。
    IMAGE_EDITOR:UV/Image Editor, UV Maps和圖像編輯器。
    SEQUENCE_EDITOR:視頻序列編輯工具。
    CLIP_EDITOR:電影剪輯編輯, 動做捕捉編輯。
    TEXT_EDITOR:文本編輯器。
    NODE_EDITOR:節點編輯器, node-based shading and compositing tools.
    LOGIC_EDITOR:邏輯編輯器, Game logic editing.
    PROPERTIES:屬性編輯, Edit properties of active object and related datablocks.
    OUTLINER:Outliner, Overview of scene graph and all available datablocks.
    USER_PREFERENCES:用戶偏好設置, Edit persistent configuration settings.
    INFO:信息顯示窗口, Main menu bar and list of error messages (drag down to expand and display).
    FILE_BROWSER:文件瀏覽器, Browse for files and assets.
    CONSOLE Python控制檯, 交互運行和腳本開發.
      
bl_translation_context
    Type:string, default 「*」, (never None)
layout
    Defines the structure of the panel in the UI
    Type:UILayout, (readonly)    
text
    XXX todo
    Type:string, default 「」, (never None)    
use_pin
    Type:boolean, default False    
classmethod poll(context)
    If this method returns a non-null output, then the panel can be drawn
    Return type:boolean    
draw(context)
    Draw UI elements into the panel UI layout
draw_header(context)
    Draw UI elements into the panel’s header UI layout

    經過上面這些參數的靈活運行,能夠建立出任何Blender原生系統支持的面板樣式。編輯器

相關文章
相關標籤/搜索