there is a number of methods like q.createNewLabel(int x, int y, int index = -1)
Suppose you need to create 9 sliders in 3 rows with equal spacing. You could write to scratchpad:
x0=10 y0=10 vspace=50
hspace=120 for row in range(0,3): for column in range(0,3): q.createNewSlider(x0+column*vspace, y0+row*hspace)
and press "Evaluate selection" in the context menu of the scratchpad.
Every time a new widget is created, a dialog opens where you can specify the properties of the widget.
I would be happy to create the widgets completely automatically, giving the channel name (like "harmonic1", harmonic2" etc) and possibly also other parameters automatically from the script, but now it is not possible yet (I think).
At least there could be an option to add the channel name with the parameters of createNewSlider and other widgets that have a channel, so that I could later use it with setWidgetProperty(channel, property, value, index= -1)
Now createNew.. returns uuid of the widget, and not the channel name. In the same time setWidgetProperty needs the channel name and how would the script know what it is? (or createNew could return also the channel name).
But still, it can be more convenient than copying, draging aligning the widgets.