我试图在一个帧中将图像作为背景,代码如下,
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()
图像似乎占据了顶部框架上的占位符,但没有显示图像,我想知道如何解决问题。
答案 0 :(得分: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)