如何使用同一个关键翻转多次在精神病?

2024-04-30 13:38:16 发布

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

我试着用同一个键在精神病患者的多次连续刺激后翻转,但它也会不断地翻转连续的屏幕

我想到的是,对手册中的一个示例进行了以下细微修改:

from psychopy import visual, core, event

win = visual.Window(monitor="testMonitor", units="deg")

stim1 = visual.TextStim(win, text="Stim 1", pos=(0,0))
stim2 = visual.TextStim(win, text="Stim 2", pos=(0,0))
stim3 = visual.TextStim(win, text="Stim 3", pos=(0,0))

while len(event.getKeys(['space'])) <= 0:
    stim1.draw()
    win.flip()

event.clearEvents()
print(event.getKeys()) # test if key buffer is really empty
win.flip()

# while len(event.getKeys(['return'])) <= 0:
#     stim2.draw()
#     win.flip()

# event.clearEvents()
# win.flip()

while len(event.getKeys(['space'])) <= 0:
    stim3.draw()
    win.flip()

event.clearEvents()
win.flip()

win.close()
core.quit()

但是,如果我在第一个屏幕上按空格键,它不会翻转这个屏幕。相反,它将闪烁stim3一瞬间,然后立即终止。另一方面,如果我对第二个刺激使用不同的键(在循环条件中用'return'替换'space'),那就可以了

我的第一个怀疑是event.clearEvents()以某种方式未能清除事件缓冲区,因此来自第一个刺激的空间事件保持保存,并翻转了第二个刺激。但是在这种情况下,根本不应该显示stim3,因为循环条件将立即失败。另外,如果我在上面指定的位置打印event.getKeys(),它看起来是空的。此外,如果我在两个空间触发的刺激之间使用不同的键(从stim2部分删除注释),突然所有键都正常工作了

有人知道我做错了什么吗

(顺便说一句,如果您想知道的话:我修改了手动示例,将程序等待来自while True循环的输入的循环更改为while len(event.getKeys(['space'])) <= 0,这样就不需要对break使用完全相同的条件。我用原来的习惯用法测试了它,只是为了确定它的行为与我的版本完全相同。)


Tags: textposeventlen屏幕spacewinvisual
1条回答
网友
1楼 · 发布于 2024-04-30 13:38:16

经过更多的测试发现,删除每个event.clearEvent()后面的win.flip()可以解决这个问题。我不太清楚为什么额外的翻转(我认为在绘制新刺激之前清除屏幕是必要的)会导致这样的行为。有人能解释一下吗

相关问题 更多 >