python - 如何使用 Tkinter 在 GUI 中导入和显示图像列表?
问题描述
from tkinter import *
from PIL import Image, ImageTk
import glob, os
root = Tk()
root.geometry("800x600")
# Function to display image
def displayImg(img):
image = Image.open(img)
photo = ImageTk.PhotoImage(image)
newPhoto_label = Label(image=photo)
newPhoto_label.pack()
# gta_images = []
os.chdir("gta")
for file in glob.glob("*.jpg"):
# gta_images.append(str(file))
displayImg(file)
print(file)
# print(gta_images)
root.mainloop()
我正在尝试从名为“gta”的文件夹中加载图像,然后在我的应用程序上显示这些游戏徽标。程序没有错误,但我认为这是一个逻辑错误。我是 Python 新手,我不知道我的 displayImg 函数中可能存在一些范围逻辑问题。
解决方案
注意:当 Python 对 PhotoImage 对象进行垃圾收集时(例如,当您从将图像存储在局部变量中的函数返回时),即使 Tkinter 小部件正在显示该图像,它也会被清除。
from tkinter import *
from PIL import Image, ImageTk
import glob, os
root = Tk()
root.geometry("800x600")
photos = []
def displayImg(img):
image = Image.open(img)
photo = ImageTk.PhotoImage(image)
photos.append(photo)#keep references!
newPhoto_label = Label(image=photo)
newPhoto_label.pack()
for file in glob.glob("*.jpg"):
displayImg(file)
print(file)
root.mainloop()
推荐阅读
- java - 从另一个类调用时,spring boot autowire 不起作用
- c - 为什么 malloc 没有为 C 中的缓冲区分配正确的长度?
- javascript - 单击提交按钮时,如何使用javascript清除输入文件预览img标签?
- c++ - 关于 xloper xll 测试的问题
- javascript - Js/React 调整容器大小超出屏幕边界
- xml - Power Automate 中命名空间 XML 属性的 XPath?
- angular - 角度/打字稿比较数字
- python - 有没有办法自动读取损坏的 xls 文件?
- r - R中的Tidyverse:无法加载包
- regex - 正则表达式有助于允许完整的数字或 3 个特殊字符后跟 4 个逗号分隔的数字,没有空格