【问题标题】:Tkinter PhotoImage background image not showing [duplicate]Tkinter PhotoImage背景图像未显示[重复]
【发布时间】:2016-03-23 15:59:41
【问题描述】:

我尝试在一个框架中制作一张图片作为背景,代码如下,

from tkinter import * 

class LoginFrame(Frame):
    def __init__(self, parent):
        #Frame.__init__(self, parent)
        super(LoginFrame, self).__init__()

        self.parent = parent        
        self.initUI()

    # initialize the login screen UI  
    def initUI(self):
        # create a background image 
        photo_bg = PhotoImage(file="building.gif")          
        building = self.make_label(self.parent, image=photo_bg)       


    def make_label(self, parent, caption=NONE, side=TOP, **options):
        label = Label(parent, text=caption, **options)

        if side is not TOP:
            label.pack(side=side)
        else:
            label.pack()

        return label


def main():
    top = Tk()    
    app = LoginFrame(top)
    top.mainloop()


if __name__ == '__main__':
    main()

图像似乎在顶部框架上占据了一个占位符,但没有显示图像,我想知道如何解决这个问题。

【问题讨论】:

  • 您需要保留对PhotoImage 的引用,否则它将被垃圾回收

标签: python tkinter photoimage


【解决方案1】:

如果你看看the Tkinter docs:

Tk 不会保留对图像的引用。当最后一个 Python 对图像对象的引用被删除时,图像数据也被删除,并且 Tk 将在使用图像的任何地方显示一个空框。

所以您只需要保留对PhotoImage 的引用即可使代码正常工作:

def initUI(self):
    # create a background image 
    self.photo_bg = PhotoImage(file="building.gif")            
    building = self.make_label(self.parent, image=self.photo_bg)       

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    • 2020-11-01
    相关资源
    最近更新 更多