使用图像更新Tkinter标签 [英] Updating Tkinter Label with an Image

查看:77
本文介绍了使用图像更新Tkinter标签的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Well I got a "small" problem with updating a label using Tkinter and PIL.

当我按下 cheese 按钮时,它应该显示foo2,但是它只显示白屏.有什么建议吗?

As soon as I press the cheese Button it should display foo2, but it just displays a white screen. Any suggestions?

这是我的代码:

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()

推荐答案

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

Well, I think that the reason is self.show which is None when you press the button. This is because this line:

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.

This happens, because pack, grid etc. return None.

这篇关于使用图像更新Tkinter标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆