我正在对精神拷贝进行实验,其中刺激在屏幕上显示了一定的时间(例如0.5S(,然后用一个空白屏幕显示固定。我正在使用event.waitkeys((以获取键盘输入。
我编写了以下代码。
for i in range (1, 21):
answer = cf.Stimulus() #This is a function for generating the stimulus
img = visual.ImageStim(
win=win,
image="temp.jpg",
units="pix"
)
img.draw() #This is the first screen
fixation.draw()
win.flip()
core.wait(0.5)
fixation.draw() #This is the second screen
win.flip()
keysarray = event.waitKeys()
os.remove('temp.jpg')
我在这里遇到的问题是,如果在第一个屏幕中的等待时间到0.5结束之前已收到键盘输入,则event.waitkeys((未注册此键输入,并且仍在等待键盘输入的第二个屏幕。该程序仅在接收第二个屏幕的密钥条目时向前移动。
相反,我希望该程序在屏幕1到屏幕末尾之间介绍键盘输入时,进入下一个刺激。也就是说,如果在屏幕1中收到键盘输入我希望注册输入的0.5末(,并继续进行下一个刺激(通过将屏幕2移至非常短的时间持续时间,或者将屏幕2一起跳到屏幕2(。我似乎无法弄清楚如何实现这一目标。
这里的简短答案是 event.waitKeys()
默认可清除事件队列,因此只能检测到新的按键。您可以通过覆盖以下方式获得所需的行为:
keysarray = event.waitKeys(clearEvents=False)
但是我认为在调用该功能之前按键不会记录有用的反应时间(尽管键盘处理在版本3.1中发生了很大变化(。
话虽如此,此代码还有许多其他问题可以改进,以适合最佳的心理拷贝风格。我建议在https://discourse.psychopy.org上的用户论坛上发布它。该论坛更适合来到来回讨论,而不是在此处的单个问题/答案格式。