2015-11-29 8 views
0

Итак, я пытаюсь запустить цикл for так, чтобы звук воспроизводился вместе с изображением до тех пор, пока звук продолжается. Я вижу изображение в течение очень короткого времени, а также слышу звук. Но потом все останавливается, я не могу дать вход в окно (я должен дать в j или f) в 0,85 секунды. После этого должно начаться новое испытание, но это не так. Не знаю, если это из-за этой ошибки, что я получаю:Python: использование pygame для воспроизведения звуков

sound1 = sound.SoundPygame(value=stimulussound) 

AttributeError: 'SoundPygame' object has no attribute 'SoundPygame' 

Я не понимаю, почему я получаю эту ошибку, так как SOUND1 разыгрывается первый судебный процесс. Но после того, как звук прекращается, изображение исчезает, фиксация пересечения отображается на экране, но фиксация пересечения не исчезает через 0,85 секунды ... А также, если я нажимаю J из F, она сохраняет ее в переменной! И это также спасает реакционное время! В любом случае, вот мой код, почему это не второе испытание, начиная с первого запуска?

#showing instructions 
instructions = visual.TextStim(window, text=actualinstructions) 
instructions.draw() 
window.flip() 

#waiting for j-key before rest of experiment runs 
if event.waitKeys("j"): 
    window.flip()  
    start = True 

#whileloop to start experiment 
while start == True: 
#forloop 
    for i in range (0,192): 
    #saving the two needed pathways in a variable 
     stimulusimage = conditiesalles[int(i)][int(2)] 
     stimulussound = conditiesalles[int(i)][int(3)] #f.e. C:\Users\Ineke\Documents\Python Scripts\Project\stimuli\Sounds\Negative\6.wav 



    #lengthofsound: using function 
     sound1 = sound.SoundPygame(value=stimulussound) 
     lengthofsound = sound1.getDuration() 

    #resetting timer and making a variable that knows the time 
     timerClock.reset() 
     currentTime = timerClock.getTime() 
     if (currentTime <= lengthofsound): 
      #imagestim 
      showingimage = visual.ImageStim(window, image=stimulusimage) 
      showingimage.draw() 
      window.flip() 
      #soundPygame 
      sound = sound.SoundPygame(value=stimulussound) 
      sound.play() 

     if (currentTime > lengthofsound): 
      timerClock.reset() 
      window.flip() 

     if (currentTime <= timefixationcross): 
      #fixatiekruis 
      Fixationcross.fixationscross(window) 

      #getKeys j of f = inputuser 
      if event.getKeys('j'): 
       inputuser = 'j' 
       reactiontime = currentTime 
      elif event.getKeys('f'): 
       inputuser = 'f' 
       reactiontime = currentTime 
      else: 
       inputuser = "geen input of foute knop gebruikt" 
       reactiontime = "geen reactie" 
     inputsuser.append(inputuser) 
     reactiontimesuser.append(reactiontime) 

    #closing the window 
    start == False  
    window.close() 

ответ

2

Эта ошибка происходит потому, что вы перезаписать в этой строке переменной sound:

sound = sound.SoundPygame(value=stimulussound) 

... так что переменная «не звучит» он больше не указывает на psychopy.sound модуль один раз этой линии была запущена , Сообщение об ошибке сообщает вам, что нет такого атрибута, как psychopy.sound.SoundPygame.SoundPygame. Решение состоит в том, чтобы просто переименовать переменную в приведенной выше строке в нечто иное, чем «звук».

В качестве побочного примечания вы, кажется, создаете одинаковые звуковые объекты для каждого испытания. sound1 и то, что вы в настоящее время называете sound, являются sound.SoundPygame(value=stimulussound). Почему бы просто не иметь его?

+0

Хорошо, теперь я вижу, что пошло не так. Больше не получайте ошибку. Также я наблюдал за тем, что у меня был звук и звук; Я просто использую sound1 сейчас. Но когда я пытаюсь запустить цикл while, мое созданное окно просто зависает и больше не реагирует на что-либо. Не удается закрыть его также с помощью window.close(). Возможно, вы знаете, как это решить? Благодаря! – Caeline

+0

Да, это потому, что вторая-последняя строка должна иметь один знак равенства вместо двойного, т. Е. Присваивать значение '' start'' вместо сравнения. Прямо сейчас цикл 'while'' просто зацикливается навсегда, так как' 'start''' 'True'' навсегда. –

 Смежные вопросы

  • Нет связанных вопросов^_^