I have five images appearing on the screen and I want to signal to the participant which one they have clicked.
The participant will select one image via mouse click and I want the one they choose (regardless of whether or not it is the correct choice) to have a border surrounding it
I have polygons behind each of the images that participants can click.
I want the colour of the polygon to change from grey to (some other colour) whenever a participant clicks on an image. I also want the colour to change back to grey after participants press the image because participants can click on multiple images in a trial. So I want the border to change to a different colour for every mouse click that participants make on an image.
My current code is: if mouse.isPressedIn (PRightOne): PolygonColor = 'white' in BeginRoutine
and added this as the fill color for the polygon
I am getting an error saying that PolygonColor is not defined as well as other errors.
just set the colour of each polygon to be constant, with an initial value of grey.
Then we can handle the colour changing entirely in code, in the “each frame” tab of a code component (make sure the code component is above the other stimuli, so that they respond immediately to any changes, rather than waiting for the next frame).
polygons = [polygon_RightOne, polygon_PWrong1, polygon_PWrong2, polygon_PWrong3, polygon_PWrong4]
images = [PRightOne, PWrong1, PWrong2, PWrong3, PWrong4]
# check for a mouse click in each image stimulus. If detected, change
# the colour of its corresponding polygon:
for i, image in enumerate(images):
if mouse.isPressedIn(image):
polygons[i].color = 'white'
else:
polygons[i].color = 'grey'
Were you sure to set the colour of each polygon stimulus to be “constant” rather than to “set every frame”? If it is set to update, that will conflict with the updating being done in the code.
Otherwise, try putting in the extra line below, to see if the click is actually being detected:
# check for a mouse click in each image stimulus. If detected, change
# the colour of its corresponding polygon:
for i, image in enumerate(images):
if mouse.isPressedIn(image):
print('Detected click in image ' + str(i)) ## TEMPORARY debugging line
polygons[i].color = 'white'
else:
polygons[i].color = 'grey'