user: Explain Bpy.Types.Menu in complete detail according to the official Blender documentation.

assistant: r(TextureNode) TextureNodeCombineColor(TextureNode) TextureNodeCompose(TextureNode) TextureNodeCoordinates(TextureNode) TextureNodeCurveRGB(TextureNode) TextureNodeCurveTime(TextureNode) TextureNodeDecompose(TextureNode) TextureNodeDistance(TextureNode) TextureNodeGroup(TextureNode) TextureNodeHueSaturation(TextureNode) TextureNodeImage(TextureNode) TextureNodeInvert(TextureNode) TextureNodeMath(TextureNode) TextureNodeMixRGB(TextureNode) TextureNodeOutput(TextureNode) TextureNodeRGBToBW(TextureNode) TextureNodeRotate(TextureNode) TextureNodeScale(TextureNode) TextureNodeSeparateColor(TextureNode) TextureNodeTexBlend(TextureNode) TextureNodeTexClouds(TextureNode) TextureNodeTexDistNoise(TextureNode) TextureNodeTexMagic(TextureNode) TextureNodeTexMarble(TextureNode) TextureNodeTexMusgrave(TextureNode) TextureNodeTexNoise(TextureNode) TextureNodeTexStucci(TextureNode) TextureNodeTexVoronoi(TextureNode) TextureNodeTexWood(TextureNode) TextureNodeTexture(TextureNode) TextureNodeTranslate(TextureNode) TextureNodeTree(NodeTree) TextureNodeValToNor(TextureNode) TextureNodeValToRGB(TextureNode) TextureNodeViewer(TextureNode) TextureSlot(bpy_struct) Theme(bpy_struct) ThemeBoneColorSet(bpy_struct) ThemeClipEditor(bpy_struct) ThemeCollectionColor(bpy_struct) ThemeCommon(bpy_struct) ThemeCommonAnim(bpy_struct) ThemeCommonCurves(bpy_struct) ThemeConsole(bpy_struct) ThemeDopeSheet(bpy_struct) ThemeFileBrowser(bpy_struct) ThemeFontStyle(bpy_struct) ThemeGradientColors(bpy_struct) ThemeGraphEditor(bpy_struct) ThemeImageEditor(bpy_struct) ThemeInfo(bpy_struct) ThemeNLAEditor(bpy_struct) ThemeNodeEditor(bpy_struct) ThemeOutliner(bpy_struct) ThemePreferences(bpy_struct) ThemeProperties(bpy_struct) ThemeRegions(bpy_struct) ThemeRegionsAssetShelf(bpy_struct) ThemeRegionsChannels(bpy_struct) ThemeRegionsScrubbing(bpy_struct) ThemeRegionsSidebars(bpy_struct) ThemeSequenceEditor(bpy_struct) ThemeSpaceGeneric(bpy_struct) ThemeSpaceGradient(bpy_struct) ThemeSpreadsheet(bpy_struct) ThemeStatusBar(bpy_struct) ThemeStripColor(bpy_struct) ThemeStyle(bpy_struct) ThemeTextEditor(bpy_struct) ThemeTopBar(bpy_struct) ThemeUserInterface(bpy_struct) ThemeView3D(bpy_struct) ThemeWidgetColors(bpy_struct) ThemeWidgetStateColors(bpy_struct) TimelineMarker(bpy_struct) TimelineMarkers(bpy_struct) Timer(bpy_struct) ToolSettings(bpy_struct) TrackToConstraint(Constraint) TransformCacheConstraint(Constraint) TransformConstraint(Constraint) TransformOrientation(bpy_struct) TransformOrientationSlot(bpy_struct) TriangulateModifier(Modifier) UDIMTile(bpy_struct) UDIMTiles(bpy_struct) UILayout(bpy_struct) UIList(bpy_struct) UIPieMenu(bpy_struct) UIPopover(bpy_struct) UIPopupMenu(bpy_struct) UI_UL_list(UIList) USDHook(bpy_struct) USERPREF_UL_asset_libraries(UIList) USERPREF_UL_extension_repos(UIList) UVLoopLayers(bpy_struct) UVProjectModifier(Modifier) UVProjector(bpy_struct) UVWarpModifier(Modifier) UnifiedPaintSettings(bpy_struct) UnitSettings(bpy_struct) UnknownType(bpy_struct) UserAssetLibrary(bpy_struct) UserExtensionRepo(bpy_struct) UserExtensionRepoCollection(bpy_struct) UserSolidLight(bpy_struct) UvSculpt(bpy_struct) VIEW3D_AST_brush_gpencil_paint(AssetShelf) VIEW3D_AST_brush_gpencil_sculpt(AssetShelf) VIEW3D_AST_brush_gpencil_vertex(AssetShelf) VIEW3D_AST_brush_gpencil_weight(AssetShelf) VIEW3D_AST_brush_sculpt(AssetShelf) VIEW3D_AST_brush_sculpt_curves(AssetShelf) VIEW3D_AST_brush_texture_paint(AssetShelf) VIEW3D_AST_brush_vertex_paint(AssetShelf) VIEW3D_AST_brush_weight_paint(AssetShelf) VIEW3D_AST_pose_library(AssetShelf) VIEW3D_FH_camera_background_image(FileHandler) VIEW3D_FH_empty_image(FileHandler) VIEW3D_FH_vdb_volume(FileHandler) VIEWLAYER_UL_aov(UIList) VIEWLAYER_UL_linesets(UIList) VOLUME_UL_grids(UIList) VectorFont(ID) VertexGroup(bpy_struct) VertexGroupElement(bpy_struct) VertexGroups(bpy_struct) VertexPaint(Paint) VertexWeightEditModifier(Modifier) VertexWeightMixModifier(Modifier) VertexWeightProximityModifier(Modifier) View2D(bpy_struct) View3DCursor(bpy_struct) View3DOverlay(bpy_struct) View3DShading(bpy_struct) ViewLayer(bpy_struct) ViewLayerEEVEE(bpy_struct) ViewLayers(bpy_struct) ViewerNodeViewerPathElem(ViewerPathElem) ViewerPath(bpy_struct) ViewerPathElem(bpy_struct) Volume(ID) VolumeDisplaceModifier(Modifier) VolumeDisplay(bpy_struct) VolumeGrid(bpy_struct) VolumeGrids(bpy_struct) VolumeRender(bpy_struct) VolumeToMeshModifier(Modifier) VoronoiTexture(Texture) WORKSPACE_UL_addons_items(UIList) WalkNavigation(bpy_struct) WarpModifier(Modifier) WaveModifier(Modifier) WeightedNormalModifier(Modifier) WeldModifier(Modifier) WhiteBalanceModifier(StripModifier) Window(bpy_struct) WindowManager(ID) WipeStrip(EffectStrip) WireframeModifier(Modifier) WoodTexture(Texture) WorkSpace(ID) WorkSpaceTool(bpy_struct) World(ID) WorldLighting(bpy_struct) WorldMistSettings(bpy_struct) XrActionMap(bpy_struct) XrActionMapBinding(bpy_struct) XrActionMapBindings(bpy_struct) XrActionMapItem(bpy_struct) XrActionMapItems(bpy_struct) XrActionMaps(bpy_struct) XrComponentPath(bpy_struct) XrComponentPaths(bpy_struct) XrEventData(bpy_struct) XrNavigation(bpy_struct) XrSessionSettings(bpy_struct) XrSessionState(bpy_struct) XrUserPath(bpy_struct) XrUserPaths(bpy_struct) bpy_prop_collection bpy_prop_collection_idprop bpy_struct wmOwnerID(bpy_struct) wmOwnerIDs(bpy_struct) wmTools(bpy_struct) Shared Enum Types Toggle navigation of Shared Enum Types Id Type Items Object Mode Items Workspace Object Mode Items Object Empty Drawtype Items Object Gpencil Type Items Metaelem Type Items Color Space Convert Default Items Proportional Falloff Items Proportional Falloff Curve Only Items Snap Source Items Snap Element Items Snap Animation Element Items Curve Fit Method Items Mesh Select Mode Items Mesh Select Mode Uv Items Mesh Delimit Mode Items Space Graph Mode Items Space File Browse Mode Items Space Sequencer View Type Items Space Type Items Space Image Mode Items Space Image Mode All Items Space Action Mode Items Fileselect Params Sort Items Region Type Items Object Modifier Type Items Constraint Type Items Boidrule Type Items Strip Modifier Type Items Strip Video Modifier Type Items Strip Sound Modifier Type Items Strip Scale Method Items Object Shaderfx Type Items Modifier Triangulate Quad Method Items Modifier Triangulate Ngon Method Items Modifier Shrinkwrap Mode Items Shrinkwrap Type Items Shrinkwrap Face Cull Items Node Warning Type Items Image Type All Items Image Color Mode Items Image Color Depth Items Image Generated Type Items Normal Space Items Normal Swizzle Items Bake Save Mode Items Bake Margin Type Items Bake Target Items Views Format Items Views Format Multilayer Items Views Format Multiview Items Stereo3D Display Items Stereo3D Anaglyph Type Items Stereo3D Interlace Type Items Exr Codec Items Color Sets Items Beztriple Keyframe Type Items Beztriple Interpolation Mode Items Beztriple Interpolation Easing Items Fcurve Auto Smoothing Items Keyframe Handle Type Items Driver Target Rotation Mode Items Keyingset Path Grouping Items Keying Flag Items Keying Flag Api Items Fmodifier Type Items Motionpath Bake Location Items Motionpath Display Type Items Motionpath Range Items Event Value Items Event Direction Items Event Type Items Event Type Mask Items Operator Type Flag Items Operator Return Items Operator Property Tag Items Brush Automasking Flag Items Brush Sculpt Brush Type Items Brush Vertex Brush Type Items Brush Weight Brush Type Items Brush Gpencil Types Items Brush Gpencil Vertex Types Items Brush Gpencil Sculpt Types Items Brush Gpencil Weight Types Items Brush Curves Sculpt Brush Type Items Brush Image Brush Type Items Brush Curve Preset Items Grease Pencil Selectmode Items Stroke Depth Order Items Axis Xy Items Axis Xyz Items Axis Flag Xyz Items Symmetrize Direction Items Texture Type Items Light Type Items Lightprobes Type Items Unpack Method Items Object Type Items Object Rotation Mode Items Object Type Curve Items Rigidbody Object Type Items Rigidbody Object Shape Items Rigidbody Constraint Type Items Object Axis Items Bake Pass Type Items Bake Pass Filter Type Items Keymap Propvalue Items Operator Context Items Wm Report Items Wm Job Type Items Property Type Items Property Subtype Items Property Subtype String Items Property Subtype Number Items Property Subtype Number Array Items Property Unit Items Property Flag Items Property Flag Enum Items Property Override Flag Items Property Override Flag Collection Items Property String Search Flag Items Shading Type Items Navigation Mode Items Node Socket In Out Items Node Socket Type Items Node Tree Interface Item Type Items Node Socket Structure Type Items Node Math Items Mapping Type Items Node Vec Math Items Node Boolean Math Items Node Compare Operation Items Node Integer Math Items Node Float To Int Items Node Map Range Items Node Clamp Items Node Compositor Extension Items Node Compositor Interpolation Items Ramp Blend Items Prop Dynamicpaint Type Items Clip Editor Mode Items Icon Items Uilist Layout Type Items Linestyle Color Modifier Type Items Linestyle Alpha Modifier Type Items Linestyle Thickness Modifier Type Items Linestyle Geometry Modifier Type Items Window Cursor Items Dt Method Vertex Items Dt Method Edge Items Dt Method Loop Items Dt Method Poly Items Dt Mix Mode Items Dt Layers Select Src Items Dt Layers Select Dst Items Context Mode Items Preference Section Items Attribute Type Items Color Attribute Type Items Attribute Type With Auto Items Attribute Domain Items Attribute Domain Edge Face Items Attribute Domain Only Mesh Items Attribute Domain Only Mesh No Edge Items Attribute Domain Only Mesh No Corner Items Attribute Domain Point Face Curve Items Attribute Domain Point Edge Face Curve Items Attribute Curves Domain Items Color Attribute Domain Items Attribute Domain Without Corner Items Attribute Domain With Auto Items Geometry Component Type Items Node Combsep Color Items Node Socket Data Type Items Node Geometry Curve Handle Side Items Node Geometry Mesh Circle Fill Type Items Volume Grid Data Type Items Collection Color Items Strip Color Items Subdivision Uv Smooth Items Subdivision Boundary Smooth Items Transform Orientation Items Velocity Unit Items Curves Type Items Curves Handle Type Items Curve Normal Mode Items Geometry Nodes Gizmo Color Items Geometry Nodes Linear Gizmo Draw Style Items Particle Edit Hair Brush Items Particle Edit Disconnected Hair Brush Items Keyframe Paste Offset Items Keyframe Paste Offset Value Items Keyframe Paste Merge Items Transform Pivot Full Items Transform Mode Type Items Nla Mode Extend Items Nla Mode Blend Items Keyblock Type Items Asset Library Type Items File Path Foreach Flag Items Types with Custom Property Support Utilities (bpy.utils) Toggle navigation of Utilities (bpy.utils) bpy.utils submodule (bpy.utils.previews) bpy.utils submodule (bpy.utils.units) Path Utilities (bpy.path) Application Data (bpy.app) Toggle navigation of Application Data (bpy.app) Application Handlers (bpy.app.handlers) Application Translations (bpy.app.translations) Application Icons (bpy.app.icons) Application Timers (bpy.app.timers) Property Definitions (bpy.props) Standalone Modules Audio System (aud) Additional Math Functions (bl_math) Font Drawing (blf) BMesh Module (bmesh) Toggle navigation of BMesh Module (bmesh) BMesh Operators (bmesh.ops) BMesh Types (bmesh.types) BMesh Utilities (bmesh.utils) BMesh Geometry Utilities (bmesh.geometry) Extra Utilities (bpy_extras) Toggle navigation of Extra Utilities (bpy_extras) bpy_extras submodule (bpy_extras.anim_utils) bpy_extras submodule (bpy_extras.asset_utils) bpy_extras submodule (bpy_extras.object_utils) bpy_extras submodule (bpy_extras.io_utils) bpy_extras submodule (bpy_extras.image_utils) bpy_extras submodule (bpy_extras.keyconfig_utils) bpy_extras submodule (bpy_extras.mesh_utils) bpy_extras submodule (bpy_extras.node_utils) bpy_extras submodule (bpy_extras.view3d_utils) bpy_extras submodule (bpy_extras.id_map_utils) Freestyle Module (freestyle) Toggle navigation of Freestyle Module (freestyle) Freestyle Types (freestyle.types) Freestyle Predicates (freestyle.predicates) Freestyle Functions (freestyle.functions) Freestyle Chaining Iterators (freestyle.chainingiterators) Freestyle Shaders (freestyle.shaders) Freestyle Utilities (freestyle.utils) Toggle navigation of Freestyle Utilities (freestyle.utils) freestyle.utils submodule (freestyle.utils.ContextFunctions) GPU Module (gpu) Toggle navigation of GPU Module (gpu) GPU Types (gpu.types) GPU Matrix Utilities (gpu.matrix) GPU Select Utilities (gpu.select) GPU Shader Utilities (gpu.shader) GPU State Utilities (gpu.state) GPU Texture Utilities (gpu.texture) GPU Platform Utilities (gpu.platform) GPU Capabilities Utilities (gpu.capabilities) GPU Utilities (gpu_extras) Toggle navigation of GPU Utilities (gpu_extras) gpu_extras submodule (gpu_extras.batch) gpu_extras submodule (gpu_extras.presets) ID Property Access (idprop.types) Image Buffer (imbuf) Toggle navigation of Image Buffer (imbuf) Image Buffer Types (imbuf.types) Math Types & Utilities (mathutils) Toggle navigation of Math Types & Utilities (mathutils) Geometry Utilities (mathutils.geometry) BVHTree Utilities (mathutils.bvhtree) KDTree Utilities (mathutils.kdtree) Interpolation Utilities (mathutils.interpolate) Noise Utilities (mathutils.noise) 5.0 Versions Loading... Note You are not using the most up to date version of the documentation. is the newest version. Back to top Toggle Light / Dark / Auto color theme Toggle table of contents sidebar Menu(bpy_struct) ¶ Basic Menu Example ¶ Here is an example of a simple menu. Menus differ from panels in that they must reference from a header, panel or another menu. Notice the ‘CATEGORY_MT_name’ in Menu.bl_idname , this is a naming convention for menus. Note Menu subclasses must be registered before referencing them from Blender. Note Menus have their UILayout.operator_context initialized as ‘EXEC_REGION_WIN’ rather than ‘INVOKE_REGION_WIN’ (see Execution Context ). If the operator context needs to initialize inputs from the Operator.invoke function, then this needs to be explicitly set. When a menu is added to UI elements such as a panel or header, the operator execution context will be inherited from them. import bpy class BasicMenu ( bpy . types . Menu ): bl_idname = "OBJECT_MT_select_test" bl_label = "Select" def draw ( self , context ): layout = self . layout layout . operator ( "object.select_all" , text = "Select/Deselect All" ) . action = &#39;TOGGLE&#39; layout . operator ( "object.select_all" , text = "Inverse" ) . action = &#39;INVERT&#39; layout . operator ( "object.select_random" , text = "Random" ) bpy . utils . register_class ( BasicMenu ) # Test call to display immediately. bpy . ops . wm . call_menu ( name = "OBJECT_MT_select_test" ) Submenus ¶ This menu demonstrates some different functions. import bpy class SubMenu ( bpy . types . Menu ): bl_idname = "OBJECT_MT_select_submenu" bl_label = "Select" def draw ( self , context ): layout = self . layout layout . operator ( "object.select_all" , text = "Select/Deselect All" ) . action = &#39;TOGGLE&#39; layout . operator ( "object.select_all" , text = "Inverse" ) . action = &#39;INVERT&#39; layout . operator ( "object.select_random" , text = "Random" ) # Access this operator as a sub-menu. layout . operator_menu_enum ( "object.select_by_type" , "type" , text = "Select All by Type..." ) layout . separator () # Expand each operator option into this menu. layout . operator_enum ( "object.light_add" , "type" ) layout . separator () # Use existing menu. layout . menu ( "VIEW3D_MT_transform" ) bpy . utils . register_class ( SubMenu ) # Test call to display immediately. bpy . ops . wm . call_menu ( name = "OBJECT_MT_select_submenu" ) Extending Menus ¶ When creating menus for add-ons you can’t reference menus in Blender’s default scripts. Instead, the add-on can add menu items to existing menus. The function menu_draw acts like Menu.draw . import bpy def menu_draw ( self , context ): self . layout . operator ( "wm.save_homefile" ) bpy . types . TOPBAR_MT_file . append ( menu_draw ) Preset Menus ¶ Preset menus are simply a convention that uses a menu sub-class to perform the common task of managing presets. This example shows how you can add a preset menu. This example uses the object display options, however you can use properties defined by your own scripts too. import bpy from bpy.types import Operator , Menu from bl_operators.presets import AddPresetBase class OBJECT_MT_display_presets ( Menu ): bl_label = "Object Display Presets" preset_subdir = "object/display" preset_operator = "script.execute_preset" draw = Menu . draw_preset class AddPresetObjectDisplay ( AddPresetBase , Operator ): &#39;&#39;&#39;Add a Object Display Preset&#39;&#39;&#39; bl_idname = "camera.object_display_preset_add" bl_label = "Add Object Display Preset" preset_menu = "OBJECT_MT_display_presets" # Variable used for all preset values. preset_defines = [ "obj = bpy.context.object" ] # Properties to store in the preset. preset_values = [ "obj.display_type" , "obj.show_bounds" , "obj.display_bounds_type" , "obj.show_name" , "obj.show_axis" , "obj.show_wire" , ] # Where to store the preset. preset_subdir = "object/display" # Display into an existing panel. def panel_func ( self , context ): layout = self . layout row = layout . row ( align = True ) row . menu ( OBJECT_MT_display_presets . __name__ , text = OBJECT_MT_display_presets . bl_label ) row . operator ( AddPresetObjectDisplay . bl_idname , text = "" , icon = &#39;ZOOM_IN&#39; ) row . operator ( AddPresetObjectDisplay . bl_idname , text = "" , icon = &#39;ZOOM_OUT&#39; ) . remove_active = True classes = ( OBJECT_MT_display_presets , AddPresetObjectDisplay , ) def register (): for cls in classes : bpy . utils . register_class ( cls ) bpy . types . OBJECT_PT_display . prepend ( panel_func ) def unregister (): for cls in classes : bpy . utils . unregister_class ( cls ) bpy . types . OBJECT_PT_display . remove ( panel_fu