Я новичок в психопи и питоне. Я пытаюсь запрограммировать способ выхода из сценария (который я не писал), например, нажав клавишу. Я добавил это в цикл while:
while n < total
start=time.clock()
if len(event.getKeys()) > 0:
break
# Another while loop here that ends when time is past a certain duration after 'start'.
И он не работает, он не регистрирует нажатия клавиш. Поэтому я предполагаю, что нажатия клавиш регистрируются только в определенное время. Что это за времена? Что требуется для регистрации нажатий клавиш? Этот цикл очень быстрый, он отправляет сигналы каждые несколько миллисекунд, поэтому я не могу просто добавить команды ожидания в цикл.
Если бы я мог просто иметь параллельный поток, проверяющий нажатие клавиши, это тоже было бы хорошо, но это звучит сложно для изучения.
Спасибо!
Правки: в противном случае код работает так, как ожидалось (в частности, без ошибок). «ядро» и «событие» включены. Нет никакой другой команды «события», которая могла бы повлиять на «журнал нажатия клавиш».
Изменение остального содержимого цикла на то, что включает операторы core.wait, заставляет его работать. Итак, для всех, у кого есть эта проблема, мое первоначальное предположение было верным: нажатия клавиш не регистрируются в часы занятости (т.е. в моем случае оператор while, который постоянно проверяет время) или, возможно, только в определенные часы занятости... больше знаний может прояснить.
event.getKeys()
в другом месте цикла while? Если вы это сделаете, он удалит все события, и это объясняетlen
=0. - person Jonas Lindeløv   schedule 03.10.2014window.flip()
. И я надеялся на конкретный ответ на вопрос: когда регистрируются нажатия клавиш? У меня есть только очень частичный ответ, основанный на примерно часовом опыте работы с PsychoPy ... Кроме того, хороший совет, чтобы дать циклу дышать, эта версия действительно имеет для меня гораздо больше смысла. - person zorgkang   schedule 04.10.2014core.wait
. Как вы сказали,waitKeys
будет ждать, так что нет причин думать, что это не сработает. Очевидно, ключевые события не регистрируются или буферизуются где-то в системе, пока она занята. Я мог бы исследовать это поведение дальше, но у меня, честно говоря, нет времени... поэтому я попросил здесь мнение эксперта. Если кто-то хочет попробовать, бесконечный (или очень длинный) цикл с оператором if, как в моем посте, должен быть достаточным, чтобы воспроизвести то, что я видел. Возможно, клавиатура PS2 может работать там, где USB не работает. Не знаю, что у меня было на работе. - person zorgkang   schedule 05.10.2014