Python Tkinter PhotoImage在函数中不';不出现

Python Tkinter PhotoImage在函数中不';不出现,python,tkinter,Python,Tkinter,我正在创建一个小程序来显示一些东西是否正常,但我对图像有一个问题。它一直在工作,直到我创建一个函数来生成我的页面 当我把我的代码放在主界面上时,它正在工作,但是如果我把代码放在一个函数中,就不会出现图像 这是我的主要目的地,我在那里得到回报 root = Tk() PanelView = PanedWindow(width=100, bd=5,relief="raised",bg="grey") PanelView.pack(fill=BOTH,expa

我正在创建一个小程序来显示一些东西是否正常,但我对图像有一个问题。它一直在工作,直到我创建一个函数来生成我的页面

当我把我的代码放在主界面上时,它正在工作,但是如果我把代码放在一个函数中,就不会出现图像

这是我的主要目的地,我在那里得到回报

root = Tk()
PanelView = PanedWindow(width=100, bd=5,relief="raised",bg="grey")
PanelView.pack(fill=BOTH,expand=1)
#my side bar code
...

rightFrame = genTout(matInput)
PanelView.add(rightFrame)

我在这里经常看到这个问题:当函数完成/返回时,您的
PhotoImage
对象将被垃圾收集。Tkinter不知何故不喜欢这样(例如,
按钮可以收集垃圾,Tkinter不知何故处理垃圾,但对于
PhotoImage
,情况并非如此)。您必须以某种方式保存这些图像,例如,首先在函数中创建帧,然后创建帧的图像属性,如下所示:

def genTout(matInput):
#框架
右边框=边框(highlightbackground=“黑色”,highlightthickness=5,bg=“灰色”)
buttonControl=Frame(右框,highlightbackground=“黑色”,highlightthickness=5,bg=“灰色”)
#图像
rightFrame.vert\u off=PhotoImage(文件=r.“\asset\vert\u off.png”)
rightFrame.rouge\u off=PhotoImage(文件=r.“\asset\rouge\u off.png”)
rightFrame.vert\u on=PhotoImage(文件=r.“\asset\vert\u on.png”)
rightFrame.rouge\u on=PhotoImage(文件=r.“\asset\rouge\u on.png”)
对于范围(0,4)内的i:
标签(buttonControl,text=i+1).网格(行=0,列=i+2)
标签(buttonControl,image=(如果matInput[i*2]==0,则rightFrame.vert\u打开,否则rightFrame.vert\u关闭)).grid(行=1,列=i+2)
标签(buttonControl,image=(如果输入[i*2+1]==0,则rightFrame.rouge\u打开,否则rightFrame.rouge\u关闭)).grid(行=2,列=i+2)
回程架
root = Tk()
PanelView = PanedWindow(width=100, bd=5,relief="raised",bg="grey")
PanelView.pack(fill=BOTH,expand=1)
#my side bar code
...

rightFrame = genTout(matInput)
PanelView.add(rightFrame)