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



所以我在python中使用TKinter时遇到了奇怪的问题。我有一个BitmapImage,在使其成为ImageTk.BitmapImage对象之前,我检查了图像。然后我告诉画布对象创建图像,然后 pack((。只有当我把 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。现在没有类,并且由于图像是在函数内部创建的,因此在函数结束后收集图像并且不引用图像。仍然不知道为什么将图像变量传递给函数不起作用,但我想这仍然是一个谜。

最新更新