0

我想以編程方式繪製圖像。本質上,我正在討論將每個單個像素設置爲圖像的映射,並且我想用PIL /枕頭來做到這一點。然後,我想在屏幕上顯示它。 GUI基於TKinter。使用PIL或枕頭繪製圖像並用TKinter顯示它

​​

prepare_menu設置菜單和同事一個條目與事件處理程序,它調用函數​​這樣的:

def show_elevation_map(p, width, height):  
    hm = platec.get_heightmap(p) 
    img = PIL.Image.new('RGBA', (width, height)) 
    pixels = img.load() 
    for y in range(0, height): 
     for x in range(0, width):    
      pixels[x, y] = (255, 0, 0, 255) 
    pi = ImageTk.PhotoImage(img) 
    sprite = canvas.create_image(100, 100, image=pi) 
    canvas.update() 

我試過這樣的,但我不能在屏幕上看到什麼,但我期望看到一切都是紅色的。我在這裏做錯了什麼?

謝謝。

+0

那麼prepare_menu()是什麼樣的?任何錯誤? –

+0

沒有錯誤返回。我看到,如果我故意拋出一個異常的圖像呈現... prepare_menu是相當簡單的(太長,以發表評論) –

回答

2

您的圖像很可能會被垃圾收集。您需要保存對圖像的持續引用。

+0

我確認,你是對的! –