Tkinter Python TK,在画布上显示图像的奇怪问题

Tkinter Python TK,在画布上显示图像的奇怪问题,tkinter,python-3.6,tkinter-canvas,Tkinter,Python 3.6,Tkinter Canvas,因此,我对python中的TKinter有一个奇怪的问题。我有一个BitmapImage我在将图像设置为ImageTk.BitmapImage对象之前检查了该图像。然后我告诉canvas对象创建图像,然后打包()。仅当我将image.show()放在后面时图像才会显示,这会引发一个错误,因为您知道ImageTk没有显示 ioFile = filedialog.askopenfilename() hexData = PyUtils.openFile(ioFile) binData = PyUtil

因此,我对python中的TKinter有一个奇怪的问题。我有一个BitmapImage我在将图像设置为ImageTk.BitmapImage对象之前检查了该图像。然后我告诉canvas对象创建图像,然后打包()。仅当我将image.show()放在后面时图像才会显示,这会引发一个错误,因为您知道ImageTk没有显示

ioFile = filedialog.askopenfilename()
hexData = PyUtils.openFile(ioFile)
binData = PyUtils.convertToBinary(hexData)
IMAGE = PyUtils.makeImage(binData)
IMAGE = ImageTk.BitmapImage(IMAGE, background='white')
binViewBox  = tk.Canvas(root, bg='light grey', width=60)
binViewBox.create_image((0,0), image=IMAGE, anchor='nw')
binViewBox.pack(anchor='nw', side=TOP, fill=BOTH, expand=True)

如果我将IMAGE.show()放在此处下方,它将显示在画布中,但会抛出并出错,我不想抛出并例外:传入其中。

通过将my IMAGE变量作为全局变量传递来解决。这是有道理的,因为之前我使用类来运行gui。现在没有类,因为图像是在函数内部创建的,所以图像是在函数结束后收集的,并且图像没有被引用。仍然不知道为什么将image变量传递给函数不起作用,但我想这仍然是个谜