Python TK, странная проблема с отображением изображения на холсте

Итак, у меня странная проблема с TKinter в python. У меня есть BitmapImage. Я проверил изображение, прежде чем сделать его объектом ImageTk.BitmapImage. Затем я говорю объекту холста создать изображение, а затем упаковать(). Изображение будет отображаться только в том случае, если я поставлю 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() прямо здесь, он будет отображаться на холсте, но выдаст и выдаст ошибку, и я не хочу бросать и за исключением: пройти туда.


person CaptObvious    schedule 23.06.2018    source источник


Ответы (1)


Решено путем передачи моей переменной изображения в качестве глобальной. Это имеет смысл, потому что раньше я использовал классы для запуска графического интерфейса. И теперь никаких классов, и поскольку изображение создается внутри функции, изображение собирается после завершения функции, и на изображение не ссылаются. До сих пор не знаю, почему передача переменной изображения в функцию не сработала, но, думаю, это останется загадкой.

person CaptObvious    schedule 23.06.2018