2

眼镜:

  • 使用 PsychoPy v1.90.3
  • 运行 Windows 10 的 Window 10 Pro 6

背景: 我正在编写一个与儿童一起使用的触摸屏任务(参考图片链接如下)。在任务中,孩子们需要按住屏幕底部的红色“主页”按钮 1.5 秒来进行试验(即打开屏幕顶部的窗口以显示他们可以打开的框)。我还收集了鼠标按钮被按下和释放的时间(用于计算响应时间)。我最初使用鼠标在桌面上编写了此任务,因此使用此代码按住主页按钮没有问题:

mouse = event.Mouse(visible=True)

     while not homePressed: 
         if mouse.isPressedIn(home) and home.contains(mouse):                
             core.wait(1.5, hogCPUperiod=1.5)                      ## when home button is pressed, wait for 1.5s
             if mouse.isPressedIn(home) and home.contains(mouse):  ## check if home button is still pressed
               homePressed=True 

当我尝试在 Surface Pro 上运行任务时,我遇到了触摸屏没有注册“按住”的问题。我了解到,除非屏幕被按下并释放,否则触摸屏不会记录鼠标点击,因为按住可能是 (1) 右键单击​​或 (2) 滑动。我尝试在 Surface Pro 上禁用“按住”注册为右键单击选项,但这并没有解决我的问题。

问题:

  • 有没有办法让 Surface Pro 或 PsychoPy 像使用鼠标一样在触摸屏上注册按下并按住,以便孩子们按下“主页”按钮继续试验?
  • 如果是,我可以让 PsychoPy 以与鼠标单击相同的方式输出“按下”(当触摸屏幕时)和“释放”(当触摸不再存在时)输出?
  • 如果这不能通过 PsychoPy 库完成,是否有可能在 PsychoPy 之外的 python 解决方案我可以尝试?

尝试的解决方案:

4

1 回答 1

-1

您可以尝试编写一个循环来自己检查保持时间。例如,在凝视条件研究中,我们有循环来检查某人注视某物的时间,类似于您的“保持”变量。

        tCueOn=expClock.getTime()
        while True:
            curtime=expClock.getTime()-tCueOn

            eventType=eyelink.getNextData()         
            sample=eyelink.getNewestSample()

            <<... a bunch of sample processing cut out ...>>

            if curtime>=cueTime:
                break

在您的情况下,您检测到压力,获取时间,然后进入循环,在该循环中反复检查压力状态是否仍然正确并且时间小于 1.5。当它超过 1.5 时,您会中断循环,或者如果它们的延迟小于 1.5,您将返回到用例中需要的任何位置。您可能会发现将这个逻辑捆绑在一个函数中很方便,只要“press home”为真,您就可以调用该函数。

希望这会有所帮助,干杯。

于 2019-02-11T14:51:16.497 回答