PsychoPy-event.getKeys()正在移动到下一个刺激,而不运行下一个刺激决策所需的代码

PsychoPy-event.getKeys()正在移动到下一个刺激,而不运行下一个刺激决策所需的代码,psychopy,Psychopy,出于某种原因,当event.getKeys在下面的第5行中运行时,它会立即转到屏幕上显示的下一个刺激,而不使用下面的所有代码来帮助决定下一个刺激是否适合显示。 但是,现在发生的是代码正在运行,但在它呈现出下一个刺激之后。所以基本上这是一个一个接一个的错误,因为下一个刺激都是使用前一个刺激选择的数据。 我试着把所有这些都放在一个while循环中,但仍然不起作用。 所以,假设有人按下“2”键,让一张快乐的脸出现。然后在下一次试验中,他们按下“7”键,表示一张悲伤的脸。当他们按下7键时,会显示一张快乐

出于某种原因,当event.getKeys在下面的第5行中运行时,它会立即转到屏幕上显示的下一个刺激,而不使用下面的所有代码来帮助决定下一个刺激是否适合显示。 但是,现在发生的是代码正在运行,但在它呈现出下一个刺激之后。所以基本上这是一个一个接一个的错误,因为下一个刺激都是使用前一个刺激选择的数据。 我试着把所有这些都放在一个while循环中,但仍然不起作用。 所以,假设有人按下“2”键,让一张快乐的脸出现。然后在下一次试验中,他们按下“7”键,表示一张悲伤的脸。当他们按下7键时,会显示一张快乐的脸,因为这是之前的输入键2选择。然后,无论他们下一步选择什么,都会有一张悲伤的脸,因为之前按了7。在继续下一步之前,所有代码都没有运行。 谢谢你的帮助

# random numbers for choosing a picture and Happy/Sad
rand = random.randint(1,140)

# acquire response key for bias
key = str(event.getKeys())

# check is bias direction equals key selection
if bias == key: 
    print ("choosing H or S")
    # get happy/sad for bias
    biasPercent = random.random() # check for 90/10%
    if biasPercent <= 0.90:
        biasEmotion = "S"
    if biasPercent > 0.90:
        biasEmotion = "H"
    print ("..................biasEmotion = " + biasEmotion)

if bias != key: 
    print ("choosing H or S")
    
    # get happy/sad for bias
    biasPercent = random.random() # check for 90/10%
    if biasPercent <= 0.90:
        biasEmotion = "H"
        happyFaceCount = happyFaceCount + 1
    if biasPercent > 0.90:
        biasEmotion = "S"
        sadFaceCount = sadFaceCount + 1
    print ("..................biasEmotion = " + biasEmotion)
    
comparison = False
iteration = 1
# chooses a random face from excel column A
while (imgName in listOfFacesHappy) or (imgName in listOfFacesSad) or comparison:
    print (str(iteration) + "  iteration")
    iteration = iteration + 1
    rand = random.randint(1,140)
    face = insheet.row_values(rand)
    imgName = face[0] # Column A (index 0) from excel
    sexIndex = imgName[1] # second char in name of file
    emotionIndex = imgName[4] # fifth char in name of file
    if (biasEmotion != emotionIndex):
        print ("emotions not equal")
        comparison = True
    else:
        print ("..............found emotion")
        comparison = False
      
if emotionIndex == "H":
    listOfFacesHappy.append(imgName)
    happyFaceCount = happyFaceCount + 1
if emotionIndex == "S":
    listOfFacesSad.append(imgName)
    sadFaceCount = sadFaceCount + 1
#print ("face list = " + str(listOfFaces))

# names currently hardcoded and not taken from excel or text file yet
if sexIndex == "F":
    nameR = random.choice(fnames)
    nameL = random.choice(fnames)
    while nameL == nameR:   #make sure two names are different
        nameR = random.choice(fnames)
if sexIndex == "M":
    nameR = random.choice(mnames)
    nameL = random.choice(mnames)
    while nameL == nameR:   #make sure two names are different
        nameR = random.choice(mnames)

几乎不可能理解这里发生了什么,因为代码似乎与问题的描述不匹配。但我猜部分问题在于使用event.getKeys。这是对事件队列的即时检查。它不会停下来让一个人做出回应,它会立即转到下一行,不管是否做出了新的回应。因此,要么放入循环中,要么使用event.waitKeys,它将在做出响应之前暂停。