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.