Difference in layout panel / menu ? difference in set property in operator / menu?
1_conscience_0_dimen Answered me a solution.
Basically the layout work differently but
we can call the menu in this different way to keep the right layout.
He posted me this script that show the behaviour.
You can see it in the link above too
import bpy

###Panel 
class PANEL_PT_Menu(bpy.types.Panel):
    bl_label = &quot;panel menu&quot;
    bl_space_type = 'PROPERTIES'
    bl_region_type = 'WINDOW'
    bl_context = &quot;0data&quot;  # to hide it. bl_context = &quot;object&quot; to show it in props   
    bl_options = {'DEFAULT_CLOSED'}

    def draw(self, context):
        layout = self.layout
        layout.label(text=&quot;The Menu you want as a panel&quot;)

####call as an operator        
class SimpleOperator(bpy.types.Operator):
    &quot;&quot;&quot;Tooltip&quot;&quot;&quot;
    bl_idname = &quot;object.simple_operator&quot;
    bl_label = &quot;Simple Object Operator&quot;
    
    def execute(self, context):
        bpy.ops.wm.call_panel(name='PANEL_PT_Menu', keep_open=True)
        return {'FINISHED'}         

addon_keymaps = []

def register():
    bpy.utils.register_class(PANEL_PT_Menu)
    bpy.utils.register_class(SimpleOperator)
    
    wm = bpy.context.window_manager

    if wm.keyconfigs.addon: #### call it from a key

        km = wm.keyconfigs.addon.keymaps.new(name = '3D View Generic', space_type = 'VIEW_3D')
        kmi = km.keymap_items.new(idname='wm.call_panel', type='Q', value='PRESS', alt=True)
        kmi.properties.name = &quot;PANEL_PT_Menu&quot;
        addon_keymaps.append((km, kmi)) 

def unregister():
    bpy.utils.unregister_class(PANEL_PT_Menu)
    bpy.utils.unregister_class(SimpleOperator)
    
    wm = bpy.context.window_manager
    kc = wm.keyconfigs.addon
    if kc:
        for km, kmi in addon_keymaps:
            km.keymap_items.remove(kmi)
    addon_keymaps.clear()    

if __name__ == &quot;__main__&quot;:
    register()

    # test call
    bpy.ops.object.simple_operator()