0

这是我的第一个 Python 脚本/程序,所以我用谷歌搜索了所有内容并开始掌握一点。

我正在尝试制作一个随机选择目录中的图片并将其显示为标签的程序。

一切都很顺利,除了一件事。我已将随机图片作为变量,并尝试告诉 Image.open 使用变量中的路径。问题是 Image.open 不将变量识别为文件名/路径,而是将其识别为

"PIL.PngImagePlugin.PngImageFile image mode=P size=980x93 at 0xF185A8".

我整晚都在谷歌上搜索,但找不到答案或解决方案。如果我同时打印两者img1-variable并且path1-variable结果正确。

任何人都知道如何解决这个问题?我将非常感谢任何答案!我有 Python 2.7.3

这是我的脚本(未完成)。

#! /usr/bin/env python
from Tkinter import *
import Tkinter
import random
from PIL import Image, ImageTk
import os

root = Tkinter.Tk()
w, h = root.winfo_screenwidth(), root.winfo_screenheight()
root.geometry("%dx%d+0+0" %(w, h))
root.configure(background="darkgreen")
dir = 'decks/'
img1 = random.choice(os.listdir(dir))
path1 = dir+img1
card1 = Image.open(path1)
card1 = card1.resize((140, 190), Image.ANTIALIAS)
magicback = Image.open("datapics/magicback.jpg")
magicback = magicback.resize((140, 190), Image.ANTIALIAS)
magicbutton = ImageTk.PhotoImage(magicback)
label = Label(root, image=magicbutton)
label.image = magicbutton
label.place(x=1, y=20)
label1 = Label(root, image=card1)
label1.image = card1
label1.place(x=1, y=230)
label2 = Label(root, image=magicbutton)
label2.image = magicbutton
label2.place(x=151, y =230)
label3 = Label(root, image=magicbutton)
label3.image = magicbutton
label3.place(x=301, y=230)
label4 = Label(root, image=magicbutton)
label4.image = magicbutton
label4.place(x=451, y=230)
label5 = Label(root, image=magicbutton)
label5.image = magicbutton
label5.place(x=601, y=230)
label6 = Label(root, image=magicbutton)
label6.image = magicbutton
label6.place(x=751, y=230)
label7 = Label(root, image=magicbutton)
label7.image = magicbutton
label7.place(x=901, y=230)
root.mainloop(0)
4

1 回答 1

0

如果我正确理解了这个问题,那么您的问题是image.open(),我相信问题是当您将目录和文件名连接在一起时,您将它们视为字符串:

path1 = dir + img1

相反,您应该尝试使用该os.path模块将两者结合起来:

path1 = os.path.join(dir, img1)
于 2012-08-20T00:04:06.810 回答