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 回答