1

私は、iPhotoや他の同様のプログラムのメイン画面のように、画像のグリッドを表示するアプリに取り組んでいます。そのために、Canvasを設定し、ファイル名のリストを繰り返し処理して、それぞれからPhotoImageを作成し、それらをキャンバスに表示します。

self.canvas = Canvas(self.bottomFrame, width = 700, height = 470, bg = "Red")
self.canvas.pack()

for i, filename in enumerate(image_list):
    photo_image = PhotoImage(filename)
    self.canvas.create_image(100*(round(i/4)+1), 100*(i+1), image = photo_image)
    self.labelList.append(photo_image)

labelListはApplicationクラスの属性であり、image_listには.gif写真のファイル名が入力されます。ただし、アプリを実行すると画像が表示されません。赤い長方形が表示されているので、キャンバスがそこにあることはわかっていますが、その上に画像はありません。

私がここで見逃していること-私は結果を探して議論の無限のページをスクロールしましたが、その仕事は見つかりませんでした。

4

1 に答える 1

2
photo_image = PhotoImage(filename)

する必要があります

photo_image = PhotoImage(file=filename)

それ以外の場合は、の関数が次のようnameになるため、を設定するだけです。__init__PhotoImage

__init__(self, name=None, cnf={}, master=None, **kw)

PhotoImageまた、 GIFおよびPGM/PPMファイルのみを処理できることにも注意してください。他の種類のファイルが必要な場合は、PILを使用する必要があります()。

于 2012-09-11T13:45:47.400 に答える