2016-12-13 17 views
-1

私は12画像のリストを持っています。それらのすべては異なる場所にあります(つまり、まったく重複しません)。私は一気にそれらを描きたい。言い換えれば、画面上に同時に12枚の写真をすべて見たいのです。これまでのところ、私はこれだけだ:Psychopy:リストからすべての画像を一度に描画

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

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

をしかし、私は任意のキーを押した後、当然のことながら、このコードは、一度に一つの写真を描画します。それで、同時に12人の写真を描く方法はありますか?

ありがとうございます!

答えて

2

元のコードでは、ループがどのように設定されたかによって、一度に1つの画像しか描かれませんでした。「circlesの各要素について、 。バッファが反転するたびに、win.flip(clearBuffer = False)でそれ以外のことを言わない限り、画面上の前のものは削除されます。

あなたは個々の画像の性質の制御を譲るために喜んでいる場合
for i in imglist: 
    i.draw() 

win.flip() 

、一つの方法:同時に画像を描画するには、[画像一覧をただループは、各要素のdraw()方法、例えば呼び出すことができます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

素晴らしいですが、どちらも完璧に機能しました。答えをありがとう! –

関連する問題