It used to be possible to add a ReferenceWidget by calling oLayout.AddItem( “Param”, “ref”, “ReferenceWidget” ) in your DefineLayout. But that was four or five years ago, and it no longer works.
def MyProperty3333_DefineLayout( in_ctxt ):
oLayout = in_ctxt.Source
oLayout.Clear()
# Test some other control types
oLayout.AddItem( "Param", "txt", "Texture Space" )
oLayout.AddItem( "Param", "scnref", "SceneReferenceWidget" )
# Doesn't work
oLayout.AddItem( "Param", "ref", "ReferenceWidget" )
# Doesn't work
oPPGItem = oLayout.AddItem( "Param", "", "dscontrol" ) ;
oPPGItem.SetAttribute( "UIType", "ReferenceWidget" );
For reference 😉 this is a ReferenceWidget:

And this is how a ReferenceWidget is added in SPDL:
Parameter "inst_source" input
{
title = "Instance source";
guid = "{5620730D-AEFC-4C4A-B1DF-9377E808E27B}";
type = reference;
}
...
inst_source
{
Name = "Source Object";
UIType = "ReferenceWidget.ReferenceWidget.1"
{
filter = "{6B579D20-3DC5-11D0-9449-00AA006D3165}";
mode = "single";
}
}