layout = self.layout new_row = layout.row() # sub-layout, para: align, heading, new_col = layout.column() # sub-layout, vertically, new_col = layout.column_flow() # like column, but will flow new_grid = layout.grid_flow() # grid, para: row_major, columns, align new_split = layout.split() # para: factor, align layout.label(text="label text") # a text label ui layout.prop(prop_obj, "obj_property_name") # add property item, extra para: icon, expand,slider,toggle,icon_only layout.operator("operator_name") # add operator action button , extra para: icon layout.seperator(factor=1.0) # empty space layout.seperator_spacer() # horizontal space layout.prop_enum layout.operator_enum layout.prop_search : data, property, search_data, search_property, text layout.popover layout.tempalte_header() # insert common space header UI layout.template_ID() # para: data, property, layout.template_ID_preview() ... layout.template_list(type_name, list_id, ptr, propname, active, rows, maxrows, ..) # a list widget