每当按下一个键,就转到另一个刺激

2024-09-28 03:19:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个关于精神病的实验,在这个实验中,一个刺激会在屏幕上显示一段时间(比如说0.5秒),然后一个空白的屏幕就会出现一个固定的画面。我在用事件.等待键()以获取键盘输入。你知道吗

我编写了以下代码。你知道吗

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结束之前收到了键盘输入,事件.等待键()未注册此键输入,仍在第二个屏幕上等待键盘输入。只有在接收到第二个屏幕的按键输入时,程序才会向前移动。你知道吗

相反,我希望程序在屏幕1开始到屏幕2结束之间出现键盘输入时转到下一个刺激。也就是说,如果键盘输入是在屏幕1本身接收到的(在0.5s结束之前),我希望输入被注册,程序进入下一个刺激(或者在很短的时间内移动到屏幕2,或者一起跳过屏幕2)。我似乎不知道如何才能做到这一点。你知道吗


Tags: the程序imgfor屏幕is事件this
1条回答
网友
1楼 · 发布于 2024-09-28 03:19:45

这里的简单答案是event.waitKeys()默认为清除事件队列,因此只检测到新的按键。您可以通过覆盖以下内容来获得所需的行为:

keysarray = event.waitKeys(clearEvents=False)

但我认为,在调用函数之前按下的键不会记录有用的反应时间(尽管3.1版中的键盘处理发生了很大变化)。你知道吗

话虽如此,这段代码还有很多其他问题需要改进,以适应更理想的心理风格。我建议在https://discourse.psychopy.org的用户论坛上发布。这个论坛比SO的单一问答形式更适合反复讨论。你知道吗

相关问题 更多 >

    热门问题