Why can't we display Operator properties within a Panel?

That’s even easier. Just use the keymap item’s operator properties :stuck_out_tongue:

import bpy

def execute_func(self, context):
    context.object.location = self.location
    context.object.hide_set(self.hidden)


class VIEW3D_PT_custom_redo_panel(bpy.types.Panel):
    bl_label = "Custom Redo Panel"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_category = "Tool"

    def draw(self, context):
        layout = self.layout
        col = layout.column()
        col.prop(kmi.properties, "location")
        col.prop(kmi.properties, "hidden")
        op = col.operator("object.simple_operator", text="Execute")
        op.location = kmi.properties.location
        op.hidden = kmi.properties.hidden


class OBJECT_OT_simple_operator(bpy.types.Operator):
    bl_idname = "object.simple_operator"
    bl_label = "Simple Object Operator"
    bl_options = {'REGISTER', 'UNDO'}

    location: bpy.props.FloatVectorProperty(size=3)
    hidden: bpy.props.BoolProperty()

    def execute(self, context):
        execute_func(self, context)
        return {'FINISHED'}


if __name__ == "__main__":
    bpy.utils.register_class(VIEW3D_PT_custom_redo_panel)
    bpy.utils.register_class(OBJECT_OT_simple_operator)
    kmi = bpy.context.window_manager.keyconfigs.addon.keymaps['3D View'].keymap_items.new("object.simple_operator", "NONE", "ANY")
6 Likes