我正在开发一个应用程序来显示图像网格,就像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照片的文件名。但是,当我运行应用程序时,不显示任何图像。我知道画布在那里,因为出现了一个红色矩形,但它上面没有图像。
我在这里缺少什么 - 我滚动了无数的讨论页面,寻找结果并且没有发现任何有效的工作。
答案 0 :(得分:2)
photo_image = PhotoImage(filename)
应该是
photo_image = PhotoImage(file=filename)
否则,您只需设置name
,因为__init__
的{{1}}功能如下所示:
PhotoImage
另请注意,__init__(self, name=None, cnf={}, master=None, **kw)
只能处理GIF和PGM / PPM文件。如果您需要其他文件类型,则必须使用PIL(example)。