2016-12-13 3 views
-1

У меня есть список из 12 изображений. Все они имеют разные местоположения (то есть они не перекрываются вообще). Я хочу нарисовать их всех сразу. Другими словами, я хочу видеть все 12 снимков одновременно на экране. До сих пор я получил это только:Психопатия: нарисовать все изображения из списка сразу

lines = [line1,line2,line3,line4,line5,line6 
      line7,line8,line9,line10,line11,line12] 

    for i in range(12): 
     lines[i].draw() 

Но, конечно же, этот код только рисует один рис в то время, после того как я нажимаю любую клавишу. Есть ли способ рисовать 12 фото одновременно?

Заранее благодарен!

ответ

2

Ваш оригинальный код только рисовал по одному изображению за раз, потому что он был настроен - он был (более или менее), говоря: «Для каждого элемента в 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() 
+0

Удивительный, оба отлично работали. Спасибо за ответ! –

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