首页 > 解决方案 > 如何使用 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 函数中可能存在一些范围逻辑问题。

标签: pythonpython-3.ximageuser-interfacetkinter

解决方案


注意:当 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()

推荐阅读