将pil与python的canvas结合使用tkinter会给出空白图像



你能帮我吗?

我正在尝试用python制作一个软件。我使用tkinter和pil进行训练
我希望能够用PIL创建一个空图像,在上面绘制,然后用tkinter使其出现。

现在我有这个

def redraw(self):
self.canvas.delete("all")
image = Image.new ('RGB', (100, 100))
draw = ImageDraw.Draw(image)
draw.rectangle ((0,0,100,100), fill = (20,20,20) )
im = ImageTk.PhotoImage (image)
self.canvas.create_rectangle (0,0, 100, 100) #appears
self.canvas.create_image (0,0, image = im) #does not

几乎就像创建的图像是透明的一样。

即使我添加了image.save("image.png", "PNG"),它也会创建一个具有我想要的灰色矩形的图像。

有人看到我的缺点了吗?

非常感谢你的帮助。

之所以会发生这种情况,是因为对"im"的引用正在丢失-如果将"im"更改为"self.im",我想您会发现它是有效的。

当然,你可以选择自己的方式来保存参考资料。有关详细说明,请参阅http://effbot.org/pyfaq/why-do-my-tkinter-images-not-appear.htm

最新更新