使用图像更新Tkinter标签

发布于 2021-01-29 15:03:24

我在使用Tkinter和PIL更新标签时遇到了一个“小”问题。

当我按下起 按钮时,它应该显示foo2,但是它只显示白色屏幕。有什么建议?

这是我的代码:

from PIL import Image as Im
from Tkinter import *

class MyWindow():

    def __init__(self):
        self.root = Tk()

        self.maskPng = Im.open("foo.png")
        self.maskPng.convert("RGBA")
        self.maskPng.save("bar.gif", "GIF")

        self.mask = PhotoImage(file = "bar.gif")

        self.show = Label(self.root, image = self.mask).pack(side = "left")

        self.speedBTN = Button(self.root, text = "cheese", command = self.speed).pack(side = "right")

        self.changed = False


   def speed(self):
        self.speedImg = Im.open('foo2')
        self.speedImg = self.speedImg.convert("RGBA")

        # overlaying foo and foo2 -- it works I tested it
        self.maskPng.paste(self.speedImg, (0,0), self.speedImg)


        self.render()

    def render(self):
        self.mask = PhotoImage(self.speedImg)
        self.show.configure(image = self.mask)
        self.show.image = self.mask

    def draw(self):
        self.root.mainloop()


    main = MyWindow()
    main.root.mainloop()
关注者
0
被浏览
70
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    好吧,我认为原因self.showNone当您按下按钮时。这是因为此行:

    self.show = Label(self.root, image = self.mask).pack(side = "left")
    

    应该:

    self.show = Label(self.root, image = self.mask)
    self.show.pack(side = "left")
    

    出现这种情况,是因为packgrid等回报None



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看