Психопия на Surface Pro 6: можно ли использовать сенсорный экран, чтобы нажимать и удерживать кнопку, аналогичную щелчку мыши? - PullRequest
0 голосов
/ 08 февраля 2019

ОСОБЕННОСТИ:

  • Использование PsychoPy v1.90.3
  • Window 10 Pro 6 под управлением Windows 10

СПРАВОЧНАЯ ИНФОРМАЦИЯ: Я программирую задачу на сенсорном экране, чтобы использовать ее с детьми (ссылка на изображение ниже).В этом задании дети должны нажать и удерживать красную кнопку «Домой» в течение 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, есть ли возможные варианты Python за пределами PsychoPy, которые я мог бы попробовать?

    с использованием только home.contains(mouse) решения найдено здесь

  • сброс решения о местоположении мыши найдено здесь

  • решение проблемы «двойного нажатия» найдено здесь

  • Отключение функции щелчка правой кнопкой мыши Surface Pro для сенсорного

    Изображение настройки задачи

1 Ответ

0 голосов
/ 11 февраля 2019

Вы можете попробовать написать цикл, который проверяет время удержания самостоятельно.Например, в исследовании случайного взгляда у нас есть циклы, чтобы проверить, как долго кто-то смотрит на что-то похожее на вашу переменную «hold».

        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, вы возвращаетесь туда, куда вам нужно в вашем случае использования.Возможно, вам будет удобно объединить эту логику в функцию, которую вы можете просто вызывать всякий раз, когда «нажмите домой» - правда.

Надеюсь, это поможет, ура.

...