我正在建立一个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
我仍然不知道为何在点击多边形之前收集鼠标位置,但这对我来说并不重要。我可以将单击鼠标的帧的数据匹配到与开始按钮对应的位置,以获得鼠标路径轨迹的开头。
答案 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
我仍然不知道为何在点击多边形之前收集鼠标位置,但这对我来说并不重要。我可以将单击鼠标的帧的数据匹配到与开始按钮对应的位置,以获得鼠标路径轨迹的开头。