2017-02-13 32 views
0
按下

我想获得一个声音,如果“太空”没有按下玩,如果时间> 1秒,并且如果“空间”按下播放声音,如果空间不Psychopy

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

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

但是,当我这样做时,我不能按'空间'来停止报警。 任何人都可以告诉我我在做什么错吗? '(len(event.getKeys())== 0)'部分是否有任何错误?

在Matlab中,我可以只写

if ~KbCheck && ..... 

,但我不知道怎么做,在Psychopy。

谢谢!

回答

1

使用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() 

正如你所看到的,我也简化了语法测试之一。

+0

它的工作原理!如果(不是event.getKeys())&time1.getTime()> 1: – TYL

+0

太好了,只需稍微更改代码 。为了避免多余的括号,我对该行进行了进一步修改。如果解决了您的问题,请考虑将此答案标记为解决方案。 –