1

プログラムで画像を描画したい。基本的に、各ピクセルを画像のマップとして設定することについて話しているのですが、PIL/pillow を使用してそれを行いたいと考えています。それでは、画面に表示させたいと思います。GUI は TKinter に基づいています。

root = Tk()
root.wm_title("Lands - A world generator")
root.resizable(0,0)

prepare_menu()

canvas = Canvas(root, width=canvas_width, height=canvas_height)
canvas.pack()

root.mainloop()

prepare_menuはメニューを設定し、1 つのエントリをイベント ハンドラに関連付けます。イベント ハンドラは次のように関数を呼び出しますshow_elevation_map

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()

このように試してみましたが、画面に何も表示されませんが、すべてが赤くなるはずです。ここで何が間違っていますか?

ありがとう。

4

1 に答える 1

2

画像がガベージ コレクションされている可能性があります。イメージへの永続的な参照を保存する必要があります。

于 2015-01-10T15:21:34.403 に答える