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