Существует множество проблем с Python в приведенном выше коде, которые, как я подозреваю, связаны с отрицательным переносом с другого языка программирования.Например, в Python вы должны использовать or
в логических сравнениях, а не |
, который в Python является оператором для побитового 'ИЛИ', другого зверя.Кроме того, вы можете попробовать больше Pythonic for TrialNo, stimulus in enumerate(StimList):
вместо for TrialNo in range(len(StimList)):
и избегать стандартных функций Python, таких как time.sleep()
, когда вы могли бы иметь более точное управление с помощью классов синхронизации PsychoPy или подсчета обновления экрана.
Но в специфических для PsychoPy API терминах, имеющих отношение к вашему основному вопросу, вам нужно позвонить event.clearEvents()
перед первым использованием стимула (например, при сбросе таймера пробного запуска).Это очистит буфер клавиатуры от любых ранее нажатых клавиш.
В дальнейших подсказках, касающихся PsychoPy, избегайте повторного создания объектов.например, таймер должен быть создан только один раз, в начале сценария.Тогда вы просто сбрасываете его один раз за испытание.На данный момент сброс фактически избыточен, так как таймер обнуляется при его создании.Таймеры просты, и многократное создание на самом деле не влияет на производительность, но стимулы являются более сложными, и вам определенно следует избегать их создания снова и снова.например, просто создайте свой имидж-стимул один раз.Затем в каждом испытании просто обновляйте его свойство изображения.Это само по себе требует времени, так как файл должен быть прочитан с диска.Поэтому в идеале вы должны делать это во время периода стимуляции фиксации или между испытаниями, как это происходит в настоящее время.
Ваш код действительно показывает несколько проблем, а не только ту, которую вы подняли в вопросе.следовательно, вы можете найти форум на https://discourse.psychopy.org более полезным, чем отдельный формат вопросов и ответов здесь, на SO.