调用mainloop后如何在tkinter画布中绘制图像?

时间:2018-08-25 17:58:01

标签: python tkinter tkinter-canvas

长话短说:我想通过点击按钮在tkinter.Canvas中绘制图像。显然,这将在调用mainloop()之后发生。但是,create_image()函数不会更新画布。

故事长话: 我试图通过单击按钮在tkinter.Canvas中绘制多个图像。这大概是我的代码。

from PIL import Image
from PIL.ImageTk import PhotoImage


# this code is inside an event handler of a button click
# this is also a class-method
ROW_COUNT = 1
COL_COUNT = 3
for i in range(ROW_COUNT):
    for j in range(COL_COUNT):
        raw_img = Image.open(img_list[i * COL_COUNT + j])
        resized_img = raw_img.resize((160, 160), Image.ANTIALIAS)
        img = PhotoImage(resized_img)
        x = j * 170
        y = i * 170
        self.canvas.create_image(x, y, anchor=NW, image=img)
        self.canvas.update_idletasks()

此代码在单击按钮时执行,因此一定会在调用mainloop()之后。但是,执行此代码后没有任何反应。如果我在循环后回想起mainloop(),则只会绘制最后一张图像。如果我在内循环中调用mainloop(),则仅绘制第一个图像(可能两个循环都中断了)。

如何绘制所有图像?

0 个答案:

没有答案