当我尝试使用循环
填充tkinter网格时遇到了问题i=0
for category in categories:
self.image = PhotoImage(file=category[2]+".png")
imageLabel = Label(master, image=self.image)
imageLabel.grid(row=0, column=i)
i = i + 1
使用此代码,我尝试并排创建一个具有不同图片的行。 但它只显示了categories数组中的最后一个图像(这个数组由一个SQL-execute btw填充)。
经过一些研究后我发现,似乎python会在每次迭代时覆盖图片的引用。
所以我尝试更改代码并将引用保存在数组中:
folderPictures = []
i = 0
for category in categories:
self.image = PhotoImage(file=category[2]+".png")
imageLabel = Label(master, image=self.image)
folderPictures.append(imageLabel)
for pictures in folderPictures:
pictures.grid(row=0, column=i)
i = +1
不幸的是,这也不起作用。我做错了什么?
谢谢和最诚挚的问候 弗朗兹
答案 0 :(得分:2)
不是每次都覆盖self.image,而是为每个图像保留一个单独的引用。例如,你可以将self.image变成一个数组(self.images [0,1,...])并将每个图像保存在不同的插槽中。
答案 1 :(得分:0)
首先加载图像并列出它们,然后放入标签。
images=[]
for category in categories:
images.append(PhotoImage(file=category[2]+".png"))
for index,img in enumerate(images):
Label(master,image=img).grid(row=0,column=index)
答案 2 :(得分:-1)
我保存了标签的引用而不是图片的参考。
self.image = []
for category in categories:
self.image.append(PhotoImage(file=category[2]+".png"))
imageLabel = Label(master, image=self.image[i])
imageLabel.grid(row=0, column=i)
i = i + 1
现在可以使用了!