在鼠标单击位置检测对象

时间:2015-11-18 15:27:21

标签: psychopy

我在屏幕上的不同位置呈现了大量不同的图像刺激。

当参与者点击刺激时,我需要该刺激项的名称可用于脚本的其余部分。 例如,您可以使用SlideState.HitTest(x, y)方法在E-Prime中实现此目的,其中x和y是鼠标坐标。

我在Psychopy中唯一能够看到的类似事物是mouse.isPressedIn(shape)方法。但是因为你必须提供一个特定的对象作为一个参数,看起来你需要一个if子句用于每个刺激,这似乎很麻烦(特别是对于大量的项目)

有更好的方法吗?我还在学习,所以我可能会遗漏一些东西。

谢谢!

1 个答案:

答案 0 :(得分:2)

不,我想不是。但是,如果您只是将所有对象添加到列表中并循环遍历它们,则代码将足够整洁。

# List of (pointers to) stimulus objects
shapes = [shape1, shape2, shape3, shape4, shape5]

# Loop over them and check if mouse is pressed on each one of them
for shape in shapes:
    if mouse.isPressedIn(shape):
        # Set this variable to point to the latest pressed shape
        pressed_shape = shape

# Now you can do stuff with this object
pressed_shape.fillColor = 'red'
pressed_shape.draw()
print pressed_shape.name

请注意,如果鼠标点击有两个对象的位置,pressed_shape是此解决方案列表中的最新内容。