除非PhotoImage变量是全局变量,否则Tkinter的PIL图像不会渲染

时间:2014-11-17 01:18:43

标签: python tkinter python-imaging-library pillow

我无法将PIL图像转换为Tkinter图像,这是我的课程:

class GameText():
    def __init__(self, parent, xPos, yPos, text, tag="default"):
        global drawTex
        self.parent = parent
        self.xPos = xPos
        self.yPos = yPos
        self.text = str(text)
        self.tag = tag

        image = Image.new("RGBA", (400, 400), None)

        draw = ImageDraw.Draw(image)
        draw.text((0, 0), self.text, font=font, fill="white")
        del draw

        drawTex = ImageTk.PhotoImage(image)
        self.image = self.parent.create_image(self.xPos, self.yPos, image=drawTex, tag=self.tag)

如果drawTex不是全局的,那么根本不显示任何图像,即使它只显示了一个图像,如果我要创建这两个对象,只会显示最后一个。

self.test1 = GameText(self, 300, 300, "ab")
self.test2 = GameText(self, 300, 300, "hi")

为什么drawTex必须是全局的,为什么只显示最后一个图像?

1 个答案:

答案 0 :(得分:1)

我自己解决了这个问题,但我不知道为什么将self.添加到drawTex会使其按预期工作。