Ваш оригинальный код только рисовал по одному изображению за раз, потому что он был настроен - он был (более или менее), говоря: «Для каждого элемента в circles
нарисуйте несколько вещей и переверните передний и задний буферы», , Каждый раз, когда буферы перевернуты, если вы не сообщите об этом иначе через win.flip(clearBuffer = False)
, предыдущие вещи на экране будут удалены. Для того, чтобы сделать изображения в то же время, вы могли бы просто перебрать список изображений и вызовите draw()
метод для каждого элемента, например:
for i in imglist:
i.draw()
win.flip()
Если вы готовы уступить контроль над свойствами отдельных изображений, один из способов было бы использовать BufferImageStim. Это займет больше времени для инициализации, но может быть быстрее, чем рисование отдельных изображений (я не приурочил его правильно). Оба метода показаны ниже.
from psychopy import visual, event, core
import urllib
import random
win = visual.Window([400, 400], fullscr = False)
# picture of a cat, save to file
urllib.urlretrieve('https://s-media-cache-ak0.pinimg.com/736x/' +
'07/c3/45/07c345d0eca11d0bc97c894751ba1b46.jpg', 'tmp.jpg')
# create five images with (probably) unique positions
imglist = [visual.ImageStim(win = win, image = 'tmp.jpg',
size = (.2, .2),
pos = ((random.random() - 0.5) * 2,
(random.random() - 0.5) * 2))
for i in xrange(5)]
# draw individual images
for i in imglist:
i.draw()
win.flip()
# wait for key press, then clear window
event.waitKeys()
win.flip()
core.wait(0.5)
# create aggregate stimulus (should look identical)
buffs = visual.BufferImageStim(win, stim = imglist)
buffs.draw()
win.flip()
event.waitKeys()
core.quit()
Удивительный, оба отлично работали. Спасибо за ответ! –