【问题标题】:PsychoPy using KeyList to set up an experimentPsychoPy 使用 KeyList 设置实验
【发布时间】:2019-01-21 05:17:38
【问题描述】:

我正在尝试编写一个代码来设置一个实验,该实验涉及:创建一个显示数字 0-9 的窗口 1 秒钟,以便用户进入下一个屏幕,他们需要按下响应提供的数字。我已经设法在屏幕上获取数字,但不确定如何使用 KeyList 来获取屏幕上显示的数字以及用户在屏幕上按下相同的数字以继续前进。

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

谢谢:)

【问题讨论】:

    标签: psychopy


    【解决方案1】:

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

    未经测试,但请尝试以下方法:

    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()
    

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

    【讨论】:

    • 感谢您的帮助,但代码会导致数字自行更改,而不是取决于用户按下的数字。
    • 好吧,我真的不太清楚任务是什么。您可以编辑您的问题以明确列出刺激和响应的步骤集吗?想想你需要如何在论文的方法部分进行交流。
    • 将数字 0-9 放在屏幕上显示 1 秒,然后在用户按下与显示的数字对应的数字键后显示下一个数字,然后移动到下一个数字,依此类推上。希望这现在有意义。
    猜你喜欢
    • 1970-01-01
    • 2014-11-04
    • 2014-06-18
    • 2022-12-16
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多