¿Cómo agregar un botón al encabezado del esquema a través del script de Python?

Sep 29 2020

¿Es posible agregar un botón a través de Python aquí?

Respuestas

3 RobertGützkow Sep 29 2020 at 04:52

Se puede acceder al encabezado del panel delineador a través de bpy.types.OUTLINER_HT_header. Es posible agregar botones adicionales al encabezado agregando o anteponiendo una función de dibujo que asigna los operadores relevantes al diseño. La función de dibujo podría tener el siguiente aspecto, si se llama a su clase de operador EXAMPLE_OT_something.

def draw(self, context):
        self.layout.operator(EXAMPLE_OT_something.bl_idname)

Si el operador se ha registrado, la función de dibujo se puede agregar al encabezado. Esto coloca el botón al final del encabezado. Usar .prependlo colocaría al principio .

bpy.types.OUTLINER_HT_header.append(draw)

A continuación se muestra un complemento de ejemplo que demuestra el concepto.

bl_info = {
    "name": "Outliner Header Button",
    "author": "Robert Guetzkow",
    "version": (1, 0, 0),
    "blender": (2, 81, 0),
    "location": "Outliner",
    "description": "Adds an example button to the outliner header.",
    "wiki_url": "",
    "category": "Outliner"}

import bpy


class EXAMPLE_OT_something(bpy.types.Operator):
    bl_idname = "example.something"
    bl_label = "Do something"
    bl_description = "This operator does something"
    bl_options = {"REGISTER"}

    def execute(self, context):
        print("Hello")
        return {"FINISHED"}


def draw(self, context):
    self.layout.operator(EXAMPLE_OT_something.bl_idname)


classes = (EXAMPLE_OT_something,)


def register():
    for cls in classes:
        bpy.utils.register_class(cls)
        
    bpy.types.OUTLINER_HT_header.append(draw)


def unregister():
    bpy.types.OUTLINER_HT_header.remove(draw)
    
    for cls in classes:
        bpy.utils.unregister_class(cls)


if __name__ == "__main__":
    register()