I have defined a custom Enum property for the Material type:

bpy.types.Material.EMaterial = EnumProperty(
    items=[('none', 'None', ''), ('vertex_lit', 'Vertex Lit', ''), ('transparent', 'Transparent', ''), ('transparent_bfcall', 'Transparent Back Face Cull', '')], name="Material"

This’s how I display panel for each material of a selected object:

    def get_materials(self, object):
        slots = object.material_slots
        materials = []
        for slot in slots:
            if slot.material != None:
        return materials

    def draw_material(self, material):
        layout = self.layout
        column = layout.column()
        column.prop(material, 'EMaterial')

    def draw_materials(self, context):
        object = context.active_object
        materials = self.get_materials(object)
        for material in materials:

    def poll(cls, context):
        return context.object != None

    def draw(self, context):

enter image description here I want the name of the property (marked red in the image ) to be dynamic. i.e. it should depend on the material name itself. For example if the name of the material is material_1 the name of the property should be material_1. Is it possible to achieve it?

P.S. please let me know if my question isn’t clear enough , I’ll elaborate it.


1 Answer 1


This can be done by adding the optional text argument to column.prop(material, 'EMaterial').

column.prop(material, 'EMaterial', text=material.name)

enter image description here


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.