Hi PsychoPy users/experts,
I am intending to present multiple (similar*) objects/components on the screen at the same time (i.e. within the same Routine). For example, in the attached picture I present the numbers (1 to 12) using multiple ‘text’ objects and the corresponding tick-marks next to them on the y-axis using multiple ‘polygon’ objects (with 4-vertices, like a small rectangle).
*The ‘numbers’ (1-12) are only different in their values and y-coordinate position.
Certainly I can repeatedly create 12 ‘text’ objects for the numbers and 12’polygons’ for the tick-markers. But, this would not be very efficient as I will have to do the same for a number of routines throughout the experiment.
As a result I am trying to use a for-loop to create a list when presenting them.
This is what I have done so far.
#at the very beginning of the script, I created a list of variable names, values, y-coordinate for the 'text' objects
ynum_name= ["ynum1_name", "ynum2_name", "ynum3_name" ... "ynum12_name"]
ynum=range(1,13)
yco=range(-1,11)
#Then, in the parts of the script that 'Initialize components for a Rountine',
#I wrote a for-loop intending to 'initialise' each of the number 1-12 'text' objects one after the other.
for xyz in ynum_name:
xyz = visual.TextStim(win=win, name=xyz,
text='default text',
font=u'Arial',
units='cm', pos=[0,0], height=0.75, wrapWidth=None, ori=0,
color=u'blue', colorSpace='rgb', opacity=1,
depth=-1.0);
#Correspondingly, I do the same when 'Prepare to Start the Routine'
#a for-loop to set 'Text' and 'Position' of each of the number 'text' objects
for i, ynumpoly in enumerate(ynum_clim):
ynumpoly.setText(ynum[i])
ynumpoly.setPos([-7, yco[i]])
#Similarly, to 'Start the Routine'
for i, ynumpoly in enumerate(ynum_clim):
if t >= 0.0 and ynumpoly.status == NOT_STARTED:
# keep track of start time/frame for later
ynumpoly.tStart = t
ynumpoly.frameNStart = frameN # exact frame index
ynumpoly.setAutoDraw(True)
This time I have got a error as fellows:
value = numpy.array(value, float)
ValueError: setting an array element with a sequence.
I think my question is how we can actually run a list of psychopy.visual.TextStim
in a loop like a list of strings and numbers. Can it be done at all?
Hopefully some of you may have some ideas on it. Many thanks.