わかりました、コードを直接実行すると問題なく動作します。クラスまたは関数に配置すると、ウィジェットは正しいサイズで表示されますが、灰色のままです。何故ですか?取得できない名前空間の問題はありますか?
#doesn't work
def example(tk, mainWindow):
moretracer = tk.PhotoImage(file="tracer-closeup.png")
trcl=tk.Label(mainWindow.L1_tabs["editreward"]["box"], image=moretracer, bd=0)
trcl.pack()
example(tk,mainWindow)
#works
moretracer = tk.PhotoImage(file="tracer-closeup.png")
trcl=tk.Label(mainWindow.L1_tabs["editreward"]["box"], image=moretracer, bd=0)
trcl.pack()
編集:わかりました、私は他の答えを読みました.self.somethingを使用することはここでは適用されませんが、参照部分は真実です.ガベージコレクタはそれを食べました. したがって、これは実用的なソリューションです:
def addimage(tk, mainWindow):
moretracer = tk.PhotoImage(file="tracer-closeup.png")
trcl=tk.Label(mainWindow.L1_tabs["editreward"]["box"], image=moretracer, bd=0)
trcl.pack()
return moretracer
e = addimage(tk,mainWindow)