与python一起使用pil和canvas给tkinter提供空白图像

时间:2018-07-21 10:32:47

标签: python canvas tkinter python-imaging-library

你能帮我吗?

我正在尝试用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")也会创建具有所需灰色矩形的图像。

有人看见我的缺点了吗?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

之所以会这样,是因为丢失了对“ im”的引用-如果将“ im”更改为“ self.im”,我想您会发现它可行。

当然,您可以选择自己的方式来保存参考。有关完整说明,请参见http://effbot.org/pyfaq/why-do-my-tkinter-images-not-appear.htm