先建立一個簡單的面板。
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原生系統支持的面板樣式。編輯器