【问题标题】:How to update polygon size with cumulative key press in Psychopy如何在 Psychopy 中使用累积按键更新多边形大小
【发布时间】:2017-05-12 08:21:00
【问题描述】:

我正在使用 Psychopy 创建一个心理任务。对于给定的例程,我希望多边形(矩形)的高度随着每次按键(每次相同的按键)而增加,直到达到最大按键次数(例如 10)。我不知道如何创建一个循环来计算同一例程中的按键次数,也不知道如何使用它来生成一个不断更新多边形大小的变量。

这是我在例程中尝试的代码,它卡在 while 循环中......我不确定循环是否应该进入代码“例程之前”或“每一帧”

total_key_count = 0 
while True: 
    resp_key = event.waitKeys(keyList=['1'])  
if resp_key == '1':
   total_key_count = total_key_count + 1 
# .. or break out of the loop if reach 10
elif total_key_count == 10:
   break  

谢谢!

【问题讨论】:

    标签: python psychopy


    【解决方案1】:

    切勿在 Builder 代码组件中使用 event.waitKeys()。 Builder 是围绕一个绘图循环构建的,该循环需要更新屏幕并在每次屏幕刷新时响应事件。如果你调用waitKeys(),你会完全暂停执行,直到按下一个键,这将彻底破坏 Builder 的时间结构。

    Begin routine 标签中,输入:

    key_count = 0
    max_keys = 10
    

    Each frame 标签中,输入:

    key_press = event.getKeys('1')
    if key_press: # i.e. if list not empty
        key_count = key_count + 1
        if key_count <= max_keys:
            # increment the height of the stimulus by some value
            # (use what is appropriate to its units):
            your_stimulus.size[1] = your_stimulus.size[1] + 0.1
        else:
            # terminate the routine (if required)
            continueRoutine = False
    

    请注意,getKeys()waitKeys() 不同,它只是即时检查按键。即它不会暂停,等待一个键。不过这很好,因为此代码将在每次屏幕刷新时运行,直到按下所需数量的键。

    大概您还需要保存一些有关响应的数据。这最好在End routine 选项卡中完成,例如

    thisExp.addData('completion_time', t) # or whatever needs recording
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多