如果未在 Psychopy 中按下 space 则播放声音

Play sound if space is not pressed in Psychopy

如果未按下 'Space' 且时间 >1 秒,我会尝试播放声音,如果按下 'Space' 则停止播放

alarm = sound.Sound(700, secs = 5)

if (len(event.getKeys())==0) & (time1.getTime() > 1):
    alarm.play()
elif event.getKeys(keyList = 'space'):
    alarm.stop()

但是,当我这样做时,我无法按 'space' 来停止闹钟。 谁能告诉我我在这里做错了什么? '(len(event.getKeys())==0)' 部分有什么问题吗?

在 Matlab 中,我可以写

if ~KbCheck && .....

但我不确定如何在 Psychopy 中做到这一点。

谢谢!

使用event.getKeys(keyList=['space'])keyList 是一个列表,而不是一个字符串。此外,更改您的逻辑顺序,因为第一次调用 event.getKeys() 会清除所有键的键盘缓冲区,因为没有提供 keyList,因此您的 elif 中没有任何内容要注册。

所以这应该可以解决问题:

if event.getKeys(keyList = ['space']):
    alarm.stop()
elif time1.getTime() > 1 and not event.getKeys():  # if another key was pressed... #added brackets here 
    alarm.play()

如您所见,我还简化了其中一项测试的语法。