我在使用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()
好吧,我认为原因self.show是None当您按下按钮时。这是因为此行:
self.show
None
self.show = Label(self.root, image = self.mask).pack(side = "left")
应该:
self.show = Label(self.root, image = self.mask) self.show.pack(side = "left")
出现这种情况,是因为pack,grid等回报None。
pack
grid