在心理实验中操作呈现的计时器

时间:2019-04-16 09:43:45

标签: python psychopy

在实验中,参与者会在屏幕右上方看到经过时间显示。我的目标是在不同条件下操纵此显示。 详细地说,在一种情况下,经过的计时器应快1.2倍,而在另一种情况下,应仅比实际时间快0.8倍。当然,计时器仍应仅显示整数(1、2、3等),而不显示小数。有什么简单的方法可以实现呢?

我尝试将计时器与常数相乘或相乘,但这会导致很多小数。如果我要向上或向下舍入这些数字,计时器将不再精确,因为计时器的每次增加不一定等于例如。 1,2秒。

1 个答案:

答案 0 :(得分:1)

创建两个PsychoPy文本刺激和一个PsychoPy计时器。在一个循环中,使用Clock对象中的当前时间值更新文本刺激。从0开始,这只是几秒钟的时间,因此您可以将其乘以一个常数即可获得所需的时间扩展。例如

from psychopy import visual, event, core

win = visual.Window(units='height')
normal_text = visual.TextStim(win=win, pos=(0, 0.1))
faster_text = visual.TextStim(win=win, pos=(0, -0.1))

timer = core.Clock() # starts here at 0. Can be reset to 0 if needed.

# run until a key press:
while not event.getKeys():
    # update the time value:
    current_time = timer.getTime()

    normal_text.text = round(timer.getTime(), ndigits=1)
    faster_text.text = round(timer.getTime() * 1.2, ndigits=1)

    # display them on screen:
    normal_text.draw()
    faster_text.draw()
    win.flip()

您应该看到,当一个文本刺激显示12.0时,另一个仍在10.0上。

关于舍入问题,请注意,如上所述,您可以告诉舍入函数舍入到特定的小数位数,但是您也应该在舍入之前进行乘法运算,否则位数确实会增加再次。