psychopy.org | Reference | Downloads | Github

Mouse selection of images with Psychopy

Using the function[mouse.getPressed()] in Psychopy for selecting the stimuli, I am facing some issues. Basically, I want the mouse to move in four directions, and when the mouse reaches red/green rectangle stimuli, I need to select that stimuli and change its color to blue.

Can anyone look into the issue and help me to resolve the same?

from psychopy import visual, core, event 
import numpy as np


# Create a window.
# For configuring and debugging the code turn off full screen.
fullscr = False
win = visual.Window(
    [1200,1000],
    monitor="testMonitor",
    units="deg",
    fullscr=fullscr
    )
    
#cursor = visual.Circle(win, radius=0.2)

#cursor = visual.CustomMouse(win,
#    leftLimit=-10, topLimit=10, rightLimit=10, bottomLimit=-10,
#    showLimitBox=True, clickOnUp=True)

pos_zero = (0, 0)
cursor = visual.Rect(
        win=win, 
        size=400,
        pos=pos_zero,
        opacity=0
        )

mouse = event.Mouse(visible=True)


# Sinusoidal control version.
freq_one = 0.5
freq_two = 1.5
# Colors of the rectangles.
#color_zero='black'
color_one = 'red'
color_two = 'green'
# Positions of the rectanges.
pos_one = (-10, 0)
pos_two = (10, 0)


start = core.getTime()
cnt = 0
cursor.pos = mouse.getPos()
print cursor.pos
while cnt<600:
    second = core.getTime() - start

    sin_val_one = 0.5+0.5*np.sin(2 * np.pi * second * float(freq_one))
    sin_val_two = 0.5+0.5*np.sin(2 * np.pi * second * float(freq_two))

#while not mouse.getPressed()[0]:
    # Do something if mouse moved

    for key in event.getKeys():
        if key == 'escape': 
           core.quit()
        elif key == "right":
           cursor.pos = cursor.pos + (2,0)
        elif key =="left":
           cursor.pos = cursor.pos - (2,0) 
        elif key =="up":
           cursor.pos = cursor.pos + (0,2) 
        elif key =="down":
           cursor.pos = cursor.pos - (0,2) 
       
        
        #if cursor.pos == pos_one:
        #   mouse.getpressed(rect_one)
        #elif cursor.pos == pos_two:
        #   mouse.getpressed(rect_two)
           
    mouse.setPos(cursor.pos)  
    mouse.lastPos = cursor.pos  
    
#    images = [rect_one, rect_two]
#
#        for image in images:
#            if mouse.isPressedIn(image):
#               pressed_shape = shape
#        
#        pressed_image.fillColor = 'blue'
#        pressed_image.draw()
#        print pressed_image.name

    rect_one = visual.Rect(
        win=win,
        fillColor=color_one,
        lineColor=color_one, 
        size=15,
        pos=pos_one,
        opacity=sin_val_one
        )
    rect_two = visual.Rect(
        win=win,
        fillColor=color_two,
        lineColor=color_two, 
        size=15,
        pos=pos_two,
        opacity=sin_val_two
        )


        
    rect_one.draw()
    rect_two.draw()
    cursor.draw()
    win.flip()
    cnt += 1

win.close()

I commented the portions with mouse.getPressed as it was stopping Psychopy.
Any help is greatly appreciated. Thanks!

Please don’t post the same question in multiple locations on this forum. It makes it less likely, rather than more likely, that you’ll get a response. Delete at least one of them.

Sorry about that, I have deleted.

Can’t delete the post actually, the issue is resolved.