最近我正在使用Python的Tkinter库开发一个项目文本编辑器。我试图制作一个函数,在文本区域插入图像。
def insertImage():
select_image = filedialog.askopenfilename(title="Select your image",filetypes=[("Image Files", "*.png"), ("Image Files", "*.jpg")])
global img
img = ImageTk.PhotoImage(file=select_image)
content_text.image_create(END, image=img)
当我试图插入第一个图像时,它工作得很好,但当我在编辑器中插入第二个图像时时,第一个图像变为不可见或白色
第一个图像第二个图像
我已经导入了所有必要的库,如tkinter、filedialog、PIL等。你能告诉我的代码中有什么问题吗?或者可以提供正确的解决方案。提前感谢!!
这是因为您对图像使用了相同的全局变量img
。当选择新图像并将其分配给img
时,则没有变量引用前一个图像,因此它将被垃圾收集。
使用list
来存储打开的图像:
imagelist = []
def insertImage():
select_image = filedialog.askopenfilename(title="Select your image",filetypes=[("Image Files", "*.png"), ("Image Files", "*.jpg")])
if select_image:
imagelist.append(ImageTk.PhotoImage(file=select_image))
content_text.image_create(tk.END, image=imagelist[-1])