首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PsychoPy使用KeyList设置实验

PsychoPy使用KeyList设置实验
EN

Stack Overflow用户
提问于 2019-01-20 21:20:36
回答 1查看 113关注 0票数 1

我正在尝试写一个代码来设置一个实验,其中包括:创建一个窗口,显示数字0-9 1秒,为了让用户进入下一个屏幕,他们需要按下与所显示的数字相对应的键。我已经设法将数字显示在屏幕上,但不确定如何使用KeyList将数字显示在屏幕上,并且用户按下屏幕上的相同数字即可继续。

代码语言:javascript
复制
from psychopy import visual, core, event

win = visual.Window([1024, 768], fullscr = False, \
    allowGUI=True, units="pix", color = (-1, -1, -1))

for number in ['0', '1', '2', '3', '4', '5', '6', '7', '8','9']:
    tstim= visual.TextStim(win,text = number, pos=(0,0))
    tstim.draw()
    win.flip()
    core.wait(1.0)
    win.flip()
    core.wait(1.0)

win.flip()

event.waitKeys(keyList=['return'])

win.close

谢谢:)

EN

回答 1

Stack Overflow用户

发布于 2019-01-21 05:11:13

你应该避免使用core.wait(),因为你不能在这段时间内做任何事情(比如不断地检查按键,这(我认为)就是你想要的。此外,为了获得更好的性能,您应该只创建一次刺激,然后根据需要更新其属性(即从头开始创建文本刺激比仅更改现有刺激的内容需要更长的时间)。

未经测试,但尝试如下所示:

代码语言:javascript
复制
from psychopy import visual, core, event

win = visual.Window([1024, 768], fullscr = False, 
      allowGUI = True, units = 'pix', color = (-1, -1, -1))

# create just once:
tstim = visual.TextStim(win, text = 'blah', pos=(0,0))

correct_key_pressed = False

for number in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']:
    tstim.text = number

    # assuming a screen refresh rate of 60 Hz, draw
    # the stimulus 60 times (= 1 second duration):
    for frame in range(60):
        tstim.draw()
        win.flip()

        # check for keypresses on every screen refresh:
        keys = event.getKeys()
        if number in keys:
            correct_key_pressed = True
            break # exit this drawing loop

    if correct_key_pressed:
        break # exit the number loop

core.quit()

这不是很复杂:它忽略了反应时间问题(例如,如果正确的按键发生在生理上有效的时间间隔之前,我们可能应该忽略对当前数字的正确按键,而是将对前一个数字的响应视为该时间段内的正确数字)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54276859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档