如果未在 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()
如您所见,我还简化了其中一项测试的语法。
如果未按下 '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()
如您所见,我还简化了其中一项测试的语法。