保存选择并在心理上显示另一个

时间:2018-04-04 23:07:43

标签: python-2.7 psychopy

我正在尝试使用心理学来建立决策任务。我之前没有使用python或psychopy的经验,所以这就是为什么我会陷入困境。

我有15次试验,每次试验都会显示一对照片。参与者需要通过按向左或向右箭头键选择其中一个图片。在他们做出选择之后,我想向他们展示他们的选择并询问他们为什么选择那张照片。

我已经在心理模型中创建了一个循环并且确定了一个.xlsx文件,用于按顺序显示我的图片。我的问题是,我没有为任何图片分配按键。我只是按下按键来结束例程。那么如何在参与者的按键按下某个试验中并在将它呈现给他/她之后保存图片。

由于我没有任何正确或错误的答案,我可以在我的.xlsx文件中添加一个额外的列,然后设置为正确的答案。

如何将按键连接到视觉刺激(我的照片,同时显示)并存储此输入并在显示后使用它?

Screenshot of my loop

    # -------Ending Routine "Deney"-------
for thisComponent in DeneyComponents:
    if hasattr(thisComponent, "setAutoDraw"):
        thisComponent.setAutoDraw(False)
# check responses
if secimtuslar.keys in ['', [], None]:  # No response was made
    secimtuslar.keys=None
trials.addData('secimtuslar.keys',secimtuslar.keys)
if secimtuslar.keys != None:  # we had a response
    trials.addData('secimtuslar.rt', secimtuslar.rt)
# the Routine "Deney" was not non-slip safe, so reset the non-slip timer
routineTimer.reset()

我可以使用这个trials.addData('secimtuslar.keys',secimtuslar.rt)变量来保存并显示循环中的另一个例程吗?

# -------Start Routine "bununedensectin"-------
while continueRoutine and routineTimer.getTime() > 0:
    # get current time
    t = bununedensectinClock.getTime()
    frameN = frameN + 1  # number of completed frames (so 0 is the first frame)
    # update/draw components on each frame

    # *text_2* updates
    if t >= 0.0 and text_2.status == NOT_STARTED:
        # keep track of start time/frame for later
        text_2.tStart = t
        text_2.frameNStart = frameN  # exact frame index
        text_2.setAutoDraw(True)
    frameRemains = 0.0 + 3- win.monitorFramePeriod * 0.75  # most of one frame period left
    if text_2.status == STARTED and t >= frameRemains:
        text_2.setAutoDraw(False)

我认为我需要在这些行之间嵌入一个有用的代码。

2 个答案:

答案 0 :(得分:1)

在实验结束时,每个试验的响应会自动存储在您的数据文件中。它也可以通过每个试验的代码获得。例如如果您的键盘组件名为trial_response,则它具有.keys属性,可通过以下代码访问:

trial_response.keys

如果您打算使用它,那么这将需要使用一些Python代码片段。实际上,通过https://discourse.psychopy.org论坛上的讨论而不是在这里讨论,可以更好地处理这方面的帮助,因为SO更侧重于询问和回答特定代码问题,以及与其他读者具有某种更广泛相关性的问题。

答案 1 :(得分:0)

我找到了问题的答案!

My Loop

我在我的循环中插入了两个例程(nedensol& nedesag),并在' Begin例程中添加了一个if语句'标签

这是nedensol例程的代码:

if 'right' in secimtuslar.keys:
continueRoutine = False

通过这样做,我阻止参与者在他们按下Deney例程时看到我的nedensol例程。

我希望这可以帮助其他有类似问题的人!