基于鼠标位置的心理变态事件

2024-10-03 09:19:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在设置一个菲茨定律实验,我希望参与者点击开始按钮,在直线上移动鼠标,然后点击目标。单击“开始”后,如果参与者在垂直方向上下移动鼠标太远,我希望显示一个白色屏幕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

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


Tags: coretrueif语句鼠标多边形startappend
1条回答
网友
1楼 · 发布于 2024-10-03 09:19:05

我的代码运行每一帧。在例行程序开始时,我补充道:

checkstart = False

通过以下代码,每个帧解决了这个特殊问题:

^{pr2}$

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

相关问题 更多 >