14

私はいくつかのtkinterを学ぼうとしています。tkinter にアイコンを表示させることができません。どこが悪いのかわかりません。エラーは発生せず、画像のサイズを尊重しますが、表示されません。私がオンラインで見つけたものはすべて、Pythonからのガベージコレクションを防ぐために2番目の参照を追加するように指示していますが、どういうわけかこれはうまくいきませんでした。これが私のコードの間違っている部分です:

from Tkinter import *
from PIL import Image, ImageTk

class GUI:

    def __init__(self, master):

        frame = Frame(master)
        frame.pack()

        #status bar
        self.bar = Frame(root, relief=RIDGE, borderwidth=5)
        self.bar.pack(side=TOP)

        self.iconPath = 'data/icons/size.png'
        self.icon = ImageTk.PhotoImage(Image.open(self.iconPath))
        self.icon_size = Label(self.bar, image = self.icon)
        self.icon_size.pack(side=LEFT)

root = Tk()


app = GUI(root)

root.mainloop()
4

3 に答える 3

33

PhotoImage またはその他の Image オブジェクトを Tkinter ウィジェットに追加するときは、画像オブジェクトへの独自の参照を保持する必要があります。そうしないと、画像が常に表示されるとは限りません。

ここで決定

于 2013-03-05T05:21:24.710 に答える
6

将来のすべての読者にとって、私の場合、問題は透明性にありました。画像からアルファチャンネルを削除すると修正されました。

于 2016-03-12T12:11:56.747 に答える