1

我正在使用 Psychopy builder 创建一个实验。参与者会看到一个包含数字的图像,例如 10 和 20。他们输入他们认为是数字的平均值,在这种情况下为 15,然后按空格键移动到下一个图像。

我正在尝试拥有它,因此屏幕上有一个显示/框,向他们显示他们的条目,因为在数十万和数百万中的更大数字我认为他们可能会忘记他们所按下的内容。更改他们的条目的能力也非常好,但实际上我最感兴趣的是他们能够在屏幕上看到它。

在构建器中,我找不到这样做的方法,并且评级量表不适用于大量数字。

我在代码中找到了这些解决方案来做一些听起来像这样的事情: http ://www.psychopy.org/wiki/home.php/Snippets/LiveUpdatingText

但是,当我尝试使用代码插入功能添加它们,或者只是将它们添加到编译脚本时,当我尝试运行实验时屏幕会锁定。我是 python 的新手,不知道从哪里开始解决这个问题。我正在尝试做的事情可能吗?我很高兴提供一些来自已编译构建器实验的示例代码。提前致谢!

4

1 回答 1

1

这些代码片段是为 Coder 设计的,您可以在其中控制正在发生的一切以及何时发生的事情。同样的事情可以在 Builder 中完成,但是您必须修改代码以适应 Builder 的事件循环周期。ie Builder 在实验开始、每次试验、每次屏幕刷新等时都会做某些事情。所以你不能不加修改就插入这种代码,因为例如,它会尝试无限期地等待按键。与此同时,Builder 会在每次屏幕刷新时检查键盘(通常为 60 Hz),因此如果您尝试无限期地等待代码中的按键,您将停止 Builder 执行它需要执行的所有其他操作。

从本质上讲,您只需将代码分解为片段,这些片段将放入 Builder 代码组件中的相应选项卡中(用于在实验开始、每一帧等执行的代码),并避免像事件这样的不确定函数。 waitKeys() 支持通过 event.getKeys() 进行即时检查

例如,改编 Jonas Lindeløv 的第二个示例,在“开始例行程序”选项卡中,输入:

chars = list('0123456789.') # the valid characters
meanText = '' # start with an empty answer on each trial

在“每一帧”选项卡中,输入如下内容:

response = event.getKeys() # get a list of keys pressed at this instant

if len(response) > 0: # if there was one,

    key = response[0] # just convenient shorthand 

    if key in chars:
        meanText = meanText + response[0]

    elif key == 'space':
        meanText = meanText + ' '

    elif key == 'backspace' and len(meanText) > 0:
        meanText = meanText[:-1]

    elif key == 'return':
        thisExp.addData('Answer', meanText) # save the response
        continueRoutine = False # finish this trial

# update the appropriate text stimulus with the current response value:
insertNameOfYourTextStimulusComponent.text = meanText
于 2015-03-11T01:06:41.903 回答