如何在Psychopy中使用累积按键更新多边形大小

时间:2017-05-11 22:22:05

标签: python 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  

谢谢!

1 个答案:

答案 0 :(得分:0)

切勿在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