#python #psychopy
#python #психопатия
Вопрос:
Я хочу представить одну и ту же рейтинговую шкалу несколько раз в цикле 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. PsychoPy — это приложение с открытым исходным кодом, позволяющее проводить широкий спектр экспериментов по нейробиологии, психологии и психофизике. Это бесплатная, мощная альтернатива Presentation ™ или e-Prime ™, написанная на Python
2. Спасибо за разъяснение. Я исправил «psychopy» (который звучал как неправильный перевод слова на английский) на «PsychoPy» с правильным регистром.
Ответ №1:
Вам нужно предпринять некоторые действия между одним ответом и следующим, что-то вроде:
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
объект-обработчик, который вы используете для управления вашими испытаниями.