【问题标题】:How to import and display list of images in GUI using Tkinter?如何使用 Tkinter 在 GUI 中导入和显示图像列表?
【发布时间】:2020-11-28 03:46:22
【问题描述】:
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 函数中可能存在一些范围逻辑问题。

【问题讨论】:

  • 试着在你的displayImg(img)上面说global photo

标签: python python-3.x image user-interface tkinter


【解决方案1】:

注意:当 Python 对 PhotoImage 对象进行垃圾收集时(例如 当您从将图像存储在本地的函数返回时 变量),图像被清除,即使它正在被 Tkinter 小部件。

For more.

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()

【讨论】:

  • @CoolCloud 不应该,因为他对多个图像使用了 for 循环。你会覆盖它,然后只有一张图像。
【解决方案2】:

不确定它是否有效,但尝试使用您从中获取图像的 gta 文件夹的路径,而不是简单地使用其名称 - 将名称替换为路径。

【讨论】:

  • 这看起来更像是一个评论,而不是一个答案,也许考虑删除这个并发表评论?
  • 如果您想留下comment,请等到您有足够的reputation。 cc @CoolCloud 它需要 50 个声望点 :)
猜你喜欢
  • 2017-11-14
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 2021-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多