以下のコードでは、pic1を3秒間表示してから、1秒間固定クロスを表示してから、ユーザーが押すまでpic2を表示していますかぎ。私の知る限りでは、これは私がキー・リストを作成してキーなどをチェックする場所であるため、3回目の 'for'ループのキー・プッシュを収集するだけですべきです。しかし、pic1またはfixationのクロス中にキーを押すと、すぐにpic2が来るとすぐに、コードと共に移動します。 3回目のforループの前にキーを登録しているようですが、3回目のforループと同様に効果があります。私はpic1と固定の表示中にキーを確認していないので、これがどうなっているのか分かりません。誰かがここで私を啓発できますか?おそらく、私はgetKeysについて根本的な何かを誤解しています。Python/Psychopy:getKeysが早すぎるキーを収集しています
- 何も押さなかった場合、予想される動作が発生します.itはpic2を表示し、キーを待機します。キーが押された場合、または60秒が経過した場合(60秒間表示するように設定した場合、ユーザーは最初の5秒間に応答することが予想されるため、60は安全です)、コードで移動します。そのメモリバッファ内のすべてのキーが存在
def block1():
running = 1
while running ==1:
for frames in range(image_frames): #3 seconds
pic1[0].draw()
window.flip()
for frame in range(fixation): #1 second
fix.draw()
window.flip()
for frames in range(stim_Frame): #only moves on with keypress (or 60 secs)
pic2[0].draw()
start = window.flip()
if frames == 0:
stim_time = start
print "stim time: "
print stim_time
allKeys = event.getKeys(keyList = ('f','h','escape'))
for thisKey in allKeys:
if thisKey == 'escape':
print "you quit"
window.close()
core.quit()
if thisKey == 'f':
keyTime=core.getTime()
thisResp = 1
print "keytime is: "
print keyTime
elif thisKey == 'h':
keyTime=core.getTime()
thisResp = 0
print "keytime is: "
print keyTime
if thisResp == 1 or thisResp == 0:
break
running = 2
window.flip()
乾杯、 スティーブ
私の理解では、 'event.getKeys()'はメモリバッファにあるすべてのキーを返します。 ['event.clearEvents()'](http://www.psychopy.org/api/event.html#psychopy.event.clearEvents) – Jakub
で3番目のループの前にそのバッファをクリアしてみてください。ありがとうございました。 getKeysが開始される前にキーが押されていても、バッファ内のすべてのキーを返すかどうかはわかりませんでした。 – Steve
@Jakubは正しいです。コメントではなく答えとしてそれを追加し、それを受け入れることは素晴らしいでしょう。そうでなければ、あなた自身の質問に答えることができます、スティーブ。 –