解决 Python Tkinter 中的 TclError: image "pyimage8" doesn't exist 错误
这个错误通常是因为 ImageTk.PhotoImage 对象被垃圾回收了,可以将其存储在实例属性或全局变量中以避免回收。在代码中,需要将 background_img 存储在一个实例属性中,例如:
self.background_img = ImageTk.PhotoImage(img)
然后在 create_image 方法中使用 self.background_img。如果是在全局作用域中使用,可以将 background_img 存储在一个全局变量中。
以下是一个修正后的代码示例:
import tkinter as tk
from PIL import Image, ImageTk
# 创建窗口
window = tk.Tk()
window.title('背景图演示')
# 加载背景图
img = Image.open('数据科学.jpg')
img = img.resize((600, 400), Image.ANTIALIAS)
# 将背景图存储在实例属性中
self.background_img = ImageTk.PhotoImage(img)
# 创建Canvas组件并插入背景图
canvas = tk.Canvas(window, width=600, height=400)
canvas.pack(fill='both', expand=True)
canvas.create_image(0, 0, image=self.background_img, anchor='nw')
# 运行窗口
window.mainloop()
通过将 background_img 存储在实例属性中,可以防止它被垃圾回收,从而避免错误的发生。
原文地址: https://www.cveoy.top/t/topic/oshm 著作权归作者所有。请勿转载和采集!