I love to keep things simple. So I wrote a little wrapper: def MyAskMenu(title, message, alist): names = [ac.Name() for ac in alist] result = poser.DialogSimple.AskMenu(title, message, names) if not result: return None idx = names.index(result) return alist[idx] With this I can use Poser lists: figure = MyAskMenu("test", "Select a figure", poser.Scene().Figures()) if figure: actor = MyAskMenu("test", "Select an actor", [ac for ac in figure.Actors() if ac.IsBodyPart()]) if actor: print("Selected actor:", actor.InternalName()) param = MyAskMenu("test", "Select a parameter", [parm for parm in actor.Parameters() if parm.IsMorphTarget() or parm.IsValueParameter()]) if param: print("Selected Parameter:", param.Name(), param.Value()) To use other things I made myself a class: class MenuEntry(object): def __init__(self, name, **args): self.name = name for k, v in args.items(): setattr(self, k, v) def Name(self): return self.name def __str__(self): return str(self.__dict__) With this class I can use MyAskMenu() like this: result = MyAskMenu("free list", "Select an entry", [MenuEntry("Label 1", a=3, b=4), MenuEntry("Label 2", abc=34), MenuEntry("Label 3")] ) print(result)