我正在设置一个菲茨定律实验,我希望参与者点击开始按钮,在直线上移动鼠标,然后点击目标。单击“开始”后,如果参与者在垂直方向上下移动鼠标太远,我希望显示一个白色屏幕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超出了我设置的范围。在
似乎鼠标位置数据是在试验开始时收集的,而不仅仅是在点击多边形之后。但是,“开始时间”和“停止时间”似乎是基于单击“多边形”和“多边形2”的时间。我真的不知道发生了什么事。在
更新: 因为某种原因,直到一天后我才收到乔纳斯的回复通知。我真希望我有,因为这会让我在几个小时前走上正轨。它是一个构建器代码组件。在
我的代码运行每一帧。在例行程序开始时,我补充道:
^{pr2}$通过以下代码,每个帧解决了这个特殊问题:
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
我仍然不知道为什么在单击多边形之前会收集鼠标位置,但这对我来说并不重要。我可以将单击鼠标的帧的数据匹配到与开始按钮相对应的位置,以获得鼠标路径跟踪的开始。在
我的代码运行每一帧。在例行程序开始时,我补充道:
通过以下代码,每个帧解决了这个特殊问题:
^{pr2}$我仍然不知道为什么在单击多边形之前会收集鼠标位置,但这对我来说并不重要。我可以将单击鼠标的帧的数据匹配到与开始按钮相对应的位置,以获得鼠标路径跟踪的开始。在
相关问题 更多 >
编程相关推荐