簡體   English   中英

使用圖像更新Tkinter標簽

[英]Updating Tkinter Label with an Image

好吧,我在使用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 = Label(self.root, image = self.mask).pack(side = "left")

應該:

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

發生這種情況是因為packgrid等返回None

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM