psychopy.org | Reference | Downloads | Github

Hidden objects are clickable

URL of experiment: https://run.pavlovia.org/matiasfduque/qrp_english/html

Description of the problem: Hidden objects are clickable.

I have several routines in which a “Click here to advance” button (it’s an image object) appears after a certain amount of time. I have the mouse component to End Routine on valid click (i.e., the advance button), but if participants click on the area where the button will appear eventually, it registers it like a valid click and ends the routine. This has cause a lot of problems in loops, where routines are back-to-back and objects are aligned in the same place. Participants will “double click” and skip routines because the second click is registered as valid. Any idea how to fix this?

I temporary solution I found is to enable the mouse component 0.5s after the beginning of the routine, preventing any type of double clicking. However, for data analysis, does the time of a clicked object start at the beginning of the routine, or at the beginning of the mouse component? I still don’t know how to fix the “invisible valid click box” problem.

Thank you!

Instead of making the items invisible, can you move their position to off screen?

It’s not that I’m making items invisible. I am just selecting their “start time” to be X seconds after the routine begins. After the 60 seconds, that image would appear, participants would click on it and end the routine. However, when participants click on that location before the image even appears, it ends the routine and records a “click” on the item (even though it was not displayed).

I’m doing all of this in builder. So to use concrete examples, when participants click on the location of NextButton7 even before it appears, it ends the routine.


I agree that’s annoying.

Presumably this is a “feature” @TParsons?

You could use a code component to move the position of NextButton7 at 182 seconds.

This is happening because the :mouse: Mouse components is what’s listening for clicks, not the :image: Image, so it starts listening for clicks when the Mouse component starts. The simplest solution is to just set the start time of the Mouse to be the same as the Image, if you don’t need the mouse for anything other than ending the routine.

If the image is just of some text, you could also replace it with a Button component, which has a mouse component built in without needing any code.

2 Likes