How to add custom icon to EnumProperty in add-on I have a custom add-on and I would like to create a dropdown list based on an EnumProperty, but I want the items in the list to take custom icons rather than the icons available within blender. I know that you can use import bpy.utils.previews to load custom icons into add-ons and set label's icon_value to custom icon ids, but I would like to be able to do the same with the items in a drop down list built based on an EnumProperty.

I have the following case for an add-on defining a class that will have a drop-down lists in which I want to have custom icons added to EACE item in the list. I want custom icons to show next to each item in the list as the drop down list is open (not just next to the closed drop down list: see image below):

# defined globally
easingItems = [
    ("EASE_IN", "Ease In", "", "", 0),
    ("EASE_OUT", "Ease Out", "", "", 1),
    ("EASE_IN_OUT", "Ease In-Out", "", "", 2)]

# prop defined in the addon/node class 
easingType = EnumProperty(
        name="Easing",
        default="EASE_IN", 
        items=easingItems,
        update=updateNode)

# then, in the draw UI
def draw_buttons(self, context, layout):
    # this is when I want the enum property to be displayed with custom icons (how?)
    layout.prop(self, ‘easingType', expand=False)


Left: This is a drop down list based on an enum property with some default blender icons. 
Right: This is a drop-down list based on a list needing custom icons (displayed as having default blender icons)



The result after Jerryno’s solution looks like this:
For each enum item an icon can be specified. You just need to edit this part of your code:

# defined globally
easingItems = [
    ("EASE_IN", "Ease In", "", customIcon["MY_EASEIN"].icon_id, 0),
    ("EASE_OUT", "Ease Out", "", customIcon["MY_EASEOUT"].icon_id, 1),
    ("EASE_IN_OUT", "Ease In-Out", "", customIcon["MY_EASEINOUT"].icon_id, 2)]