基于鼠标位置的心理事件

时间:2014-11-05 19:06:32

标签: python mouseevent psychopy

我正在建立一个Fitts'法律实验我想让参与者点击一个开始按钮,直线移动鼠标,然后点击一个目标。点击开始后,如果参与者在垂直方向上将鼠标向上或向下移动太远,我想显示白色屏幕30秒并且不接受输入,然后转到下一个试验。

目前,无论如何,实验表现得好像我移动到可接受的范围之外并且总是执行if语句。

以下是我现在的代码:

from psychopy import core

start = mouse.isPressedIn(polygon, buttons=[0])


if start==True:
    thisExp.addData('starttime',core.getTime())
    x, y = mouse.getPos()
    mouse.x.append(x)
    mouse.y.append(y) 
    if y>10 or y<-10:         #this is the statement that isn't resulting in what I would expect
thisExp.addData('penalty',1)

finish = mouse.isPressedIn(polygon2, buttons=[0])

if finish==True:
    thisExp.addData('stoptime',core.getTime())
    continueRoutine=False

我还没有在嵌套的if语句中弄清楚我需要的一切。现在我只是想确保它正常工作。它永远不会将if语句评估为true并且永远不会添加惩罚,即使查看csv文件中收集的mouse.y列表数据,我也可以看到有些y在我设置的范围之外的情况。

一旦试验开始,似乎正在收集鼠标位置数据,而不仅仅是在点击多边形之后。但是,starttime和stoptime似乎基于何时单击polygon和polygon2。我真的不确定发生了什么。

更新: 我没有得到有关Jonas&#39;的通知。由于某种原因,直到一天后回复。我希望我拥有,因为它会让我在几小时前走上正轨。它是构建器代码组件。

我的代码全部都在运行。在例行程序开始时我添加了:

checkstart = False

使用以下代码,每个框架解决了这个特殊问题:

start = mouse.isPressedIn(polygon, buttons=[0])

if start==True:
    thisExp.addData('starttime',core.getTime())
    x, y = mouse.getPos()
    mouse.x.append(x)
    mouse.y.append(y)
    checkstart=True;

if checkstart==True:
    if y>10 or y <-10:
        thisExp.addData('penalty',1)


finish = mouse.isPressedIn(polygon2, buttons=[0])

if finish==True:
    thisExp.addData('stoptime',core.getTime())
    continueRoutine=False

我仍然不知道为何在点击多边形之前收集鼠标位置,但这对我来说并不重要。我可以将单击鼠标的帧的数据匹配到与开始按钮对应的位置,以获得鼠标路径轨迹的开头。

1 个答案:

答案 0 :(得分:0)

我的代码全部都在运行。在例行程序开始时我添加了:

checkstart = False

使用以下代码,每个框架解决了这个特殊问题:

start = mouse.isPressedIn(polygon, buttons=[0])

if start==True:
    thisExp.addData('starttime',core.getTime())
    x, y = mouse.getPos()
    mouse.x.append(x)
    mouse.y.append(y)
    checkstart=True;

if checkstart==True:
    if y>10 or y <-10:
        thisExp.addData('penalty',1)


finish = mouse.isPressedIn(polygon2, buttons=[0])

if finish==True:
    thisExp.addData('stoptime',core.getTime())
    continueRoutine=False

我仍然不知道为何在点击多边形之前收集鼠标位置,但这对我来说并不重要。我可以将单击鼠标的帧的数据匹配到与开始按钮对应的位置,以获得鼠标路径轨迹的开头。