0

これは私の最初の Python スクリプト/プログラムなので、すべてをググって少し把握し始めました。

ディレクトリ内の画像をランダムに選択してラベルとして表示するプログラムを作成しようとしています。

1つのことを除いて、すべてがうまくいきます。ランダムな画像を変数として作成し、変数でパスを使用するよう 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モジュールを使用して 2 つを組み合わせてみてください。

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