我正在尝试创建一个定义,如果传入有效路径,该定义将允许我向帧中添加图像。
我读到我必须保留来自此page的图像参考
请记住,我在代码中尝试过此操作:
class tkinterHelper(Frame):
def __init__(self, master):
"initialize the frame"
Frame.__init__(self, master)
self.grid()
def AddImage(self, Path, X, Y):
self.Render = PhotoImage(Path)
TKImage = Label(self, image=self.Render)
TKImage.image = self.Render
TKImage.place(x=X, y=Y, relwidth=1, relheight=1)
return self.Render
if __name__ == "__main__":
root = Tk()
tkHelper = tkinterHelper(root)
BackGround = tkHelper.AddImage("Images\\background.gif", 0, 0)
root.mainloop()
我在想,如果我返回self.render
,我仍然会引用该图片。
如果那不是我如何保留对图像的引用,怎么能正确引用呢?
我想保持它与原来的结构相同,因为将来我将向该应用程序添加很多图像。
谢谢!
答案 0 :(得分:0)
我通过在助手类中添加名为widget_placement
的def来修复代码
def widget_placement(self, widget, r, c, spacex, spacey, s):
widget.grid(row=r, column=c, padx=spacex + 20, pady=spacey, sticky=s)
然后我让def AddImage(self, path, X, Y)
仅返回TKImage
def AddImage(self, Path, X, Y):
self.Render = PhotoImage(file=Path)
TKImage = Label(self, image=self.Render)
TKImage.image = self.Render
return TKImage
最后,我将图像放在网格上。
BackGround = tkHelper.AddImage("Images\\background.gif", 100, 100)
tkHelper.widget_placement(BackGround, 0, 0, 0, 0, W)