【问题标题】:Mouse click/release psychopy鼠标点击/释放心理
【发布时间】:2015-06-05 17:23:00
【问题描述】:

我正在使用 .isPressedIn() 函数查看鼠标点击是否处于目标形状中。但是,每当您单击目标形状时,它都会说响应不正确。但是,每当您在目标形状中按住鼠标按钮时,都会显示鼠标已单击目标。我不确定如何修复鼠标按钮释放。我尝试使用 CustomMouse,但我无法让它在形状内单击(除非我弄错了)。任何建议将不胜感激。

谢谢!

stimDuration = 5 #stimuli are on the screen for 5 seconds 
potential_target = [shape1, shape2, shape3] #shapes that may be a target
target = random.sample(potential_target, 1) #randomly select a target
myMouse = event.Mouse()                     #define mouse

if clock.getTime() >= stimDuration
    ResponsePrompt.draw() #message to indicate to participant to select target
    win.flip()
    core.wait(2) 
    if myMouse.isPressedIn(target[0]):
        print "correct"
    else:
        print "incorrect"

【问题讨论】:

  • 我认为我们需要更多信息来帮助您。您能否用更多代码更新您的问题:什么是目标 [0]?您是否在循环中运行 if-else 测试,如果是,那么该循环是否充满了其他相关内容?此外,单击的一部分是按住按钮很短的时间,所以我只是想完全确保您说单击形状打印“不正确”,同时将按钮按住在完全相同的位置打印“正确”?
  • 我已经更新了代码。除非您不断按住鼠标按钮,否则代码当前打印“不正确”。

标签: mouseevent mouse psychopy


【解决方案1】:

问题在于,myMouse.isPressedIn(target[0]) 行会在该行运行时准确检查鼠标的状态。由于它前面是core.wait(2),它不会在这两秒钟内对鼠标点击做出反应,因此只会收集两秒钟后您仍然按住它的鼠标响应。

我会在 myMouse.isPressedIn 周围有一个紧密的循环,每秒运行数千次。所以跳过你的第一行:

ResponsePrompt.draw() # message to indicate to participant to select target
win.flip()  # show that message

while True:  # keep looping. We will break this loop on a mouse press
    if myMouse.isPressedIn(target[0]):  # check if click is within shape
        print "correct"
        break  # break loop if this condition was met
    elif myMouse.getPressed():  # check if there was any mouse press at all, no matter location
        print "incorrect"
        break  # break while loop if this condition was met

【讨论】:

    【解决方案2】:

    在该代码中,您正在使用表达式 if myMouse.isPressedIn(target[0]),但仅在 一段时间后评估该表达式 (stimDuration)。这意味着isPressedIn() 通常会在实际点击发生后进行评估。此时,鼠标可能不再位于target[0] 内,或者可能不再被对象按下。所以我认为你看到的是正确的(预期的)行为。

    因此,要获得您想要的行为,您需要跟踪是否在每一帧的形状中按下鼠标。

    另外,我不确定您如何使用您发布的代码。有些看起来适合每一帧,但有些看起来应该只运行一次(开始例程)。你可能想回顾一下——事情不应该每帧都初始化(比如targetmyMouse)。

    【讨论】:

      猜你喜欢
      • 2014-01-15
      • 2013-03-23
      • 1970-01-01
      • 1970-01-01
      • 2021-11-20
      • 2011-08-10
      • 1970-01-01
      • 2013-11-17
      • 1970-01-01
      相关资源
      最近更新 更多