Представление одного и того же RatingScale несколько раз в цикле for - PullRequest
2 голосов
/ 10 марта 2019

Я хочу представить одну и ту же шкалу оценок несколько раз в цикле for.

Я пытался сделать это следующим образом

for i in range(5):
    while rating_scale.noResponse:
        rating_question.draw()
        rating_scale.draw()
        win.flip()
        if event.getKeys(['escape']):
            core.quit()

Но она не представляет шкалу оценки несколько раз,Это просто дает значение первого цикла 5 раз.

Итак, я подумал, может быть, если я переопределю шкалу оценок (у меня есть две шкалы оценок, которые может выбрать PsychoPy):

rating_question     = visual.TextStim(win, text = "Hoe moeilijk vond je deze trial?", pos = (0,0.5))
rating_scale_1      = visual.RatingScale(win, low=0, high=100, marker='slider', tickMarks=[0, 25, 50, 75, 100], stretch=2, tickHeight=1.5, labels=["Heel makkelijk", "Makkelijk", "Neutraal", "Moeilijk", "Heel moeilijk"], showValue=False)
rating_scale_2      = visual.RatingScale(win, low=0, high=100, marker='slider', tickMarks=[0, 25, 50, 75, 100], stretch=2, tickHeight=1.5, labels=["Heel moeilijk", "Moeilijk", "Neutraal", "Makkelijk", "Heel makkelijk"], showValue=False)
rating_scales       = [rating_scale_1, rating_scale_2]

for i in range(5):
    rating_scale = rating_scales[random.randint(0,2)]
    while rating_scale.noResponse:
        rating_question.draw()
        rating_scale.draw()
        win.flip()
        if event.getKeys(['escape']):
            core.quit()

Но это дает ошибку, потому что, я полагаю, он автоматически выбирает одну и ту же шкалу оценок 5 раз.Таким образом, когда случайное целое число отличается в следующих циклах, оно просто не работает.

Итак, я попробовал это так, но он делает то же самое, что и первая часть кода.Все еще только одно представление шкалы оценок и 5 раз одинаковое значение.

for i in range(5):
    rating_scale = rating_scales[1]
    while rating_scale.noResponse:
        rating_question.draw()
        rating_scale.draw()
        win.flip()
        if event.getKeys(['escape']):
            core.quit()

Я знаю, почему это происходит (потому что я говорю, что цикл должен представлять только тогда, когда нет ответа), но у меня нетИдея как это исправить.Насколько мне известно, рейтинговая шкала не имеет ничего общего со свойством .clear ().

1 Ответ

1 голос
/ 11 марта 2019

Вам нужно выполнить какое-то действие между одним ответом и следующим, что-то вроде:

for trial in trials:

    # update the question for this trial:
    rating_question.text = trial['question']

    # present the rating scale:        
    while rating_scale.noResponse:
        rating_question.draw()
        rating_scale.draw()
        win.flip()
        if event.getKeys(['escape']):
            core.quit()

    # a response was made, so save it on each iteration
    trials.addData('rating.response', rating.getRating())
    trials.addData('rating.rt', rating.getRT())

    # reset the scale to its original state for the next iteration:
    rating_scale.reset()

Выше trials представляет объект-обработчик TrialHandler, который вы используете для управления своими испытаниями.

...