Переход к другому стимулу при каждом нажатии клавиши - PullRequest
0 голосов
/ 11 мая 2019

Я настраиваю эксперимент по психопии, в котором стимул отображается на экране в течение установленного периода времени (скажем, 0,5 с), после чего пустой экран отображается с фиксацией. Я использую event.waitKeys () для ввода с клавиатуры.

Я написал следующий код.

for i in range (1, 21):
    answer = cf.Stimulus() #This is a function for generating the stimulus
    img = visual.ImageStim(
        win=win,
        image="temp.jpg",
        units="pix"
    )

    img.draw()             #This is the first screen
    fixation.draw()
    win.flip()
    core.wait(0.5)

    fixation.draw()        #This is the second screen
    win.flip()
    keysarray = event.waitKeys()
    os.remove('temp.jpg')

Проблема, с которой я здесь сталкиваюсь, заключается в том, что, если ввод с клавиатуры был получен до того, как время ожидания 0,5 заканчивается на первом экране, events.waitKeys () не регистрирует эту запись ключа и все еще ждет второй экран для ввода с клавиатуры. Программа движется вперед только в том случае, если для второго экрана получена ключевая запись.

Вместо этого я хочу, чтобы программа переходила к следующему стимулу всякий раз, когда ввод с клавиатуры вводится между началом экрана 1 и концом экрана 2. То есть, если ввод с клавиатуры принимается на самом экране 1 (до конец 0,5 с), я хочу, чтобы вход был зарегистрирован, и программа перешла к следующему стимулу (либо переходя на экран 2 в течение очень короткого промежутка времени, либо пропуская экран 2 все вместе). Кажется, я не могу понять, как этого достичь.

1 Ответ

0 голосов
/ 12 мая 2019

Короткий ответ здесь таков: event.waitKeys() по умолчанию очищает очередь событий, поэтому обнаруживаются только новые нажатия клавиш.Вы можете получить желаемое поведение, переопределив это:

keysarray = event.waitKeys(clearEvents=False)

Но я думаю, что нажатие клавиш до вызова функции не будет записывать полезное время реакции (хотя обработка клавиатуры сильно изменилась в версии 3.1).

Сказав это, есть множество других проблем с этим кодом, которые можно улучшить, чтобы они подходили под более оптимальный стиль PsychoPy.Я бы предложил разместить его на форуме пользователей по адресу https://discourse.psychopy.org.. Этот форум лучше подходит для дискуссий, чем формат вопросов и ответов здесь, на SO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...