Arrays 我需要从数组中提取一个图像文件名的文本,但我只得到了一个“";pyimage“;或;tkinter.PhotoImage对象在X处;作为答复

Arrays 我需要从数组中提取一个图像文件名的文本,但我只得到了一个“";pyimage“;或;tkinter.PhotoImage对象在X处;作为答复,arrays,image,variables,tkinter,filenames,Arrays,Image,Variables,Tkinter,Filenames,我试图创建一个数组,其中包含各种不同的随机图像文件,以显示在Tkinter中的一组按钮上。单击给定按钮时,我希望将该文件名的文本添加到新数组中。基本上,当单击带有imageX的按钮时,将“imageX”添加到新数组中 不幸的是,我总是得到一个返回,它不是图像的文件名,也不是我设置的与该图像对应的变量,而是: 如果命令为populationbeta.append(population[0]),则“X处的tkinter.PhotoImage对象”(其中X是类似于“0x0000020FC894D2E

我试图创建一个数组,其中包含各种不同的随机图像文件,以显示在Tkinter中的一组按钮上。单击给定按钮时,我希望将该文件名的文本添加到新数组中。基本上,当单击带有imageX的按钮时,将“imageX”添加到新数组中

不幸的是,我总是得到一个返回,它不是图像的文件名,也不是我设置的与该图像对应的变量,而是:

  • 如果命令为populationbeta.append(population[0]),则“X处的tkinter.PhotoImage对象”(其中X是类似于“0x0000020FC894D2E0”的位置) 或
  • “pyimage#”(其中#是一个似乎与源文件中的图像数量相关的整数),如果我将命令更改为populationbeta.append(str(population[0]))
我觉得应该有一个简单的方法来做到这一点,我已经尝试了我能想到的每一项工作,但我没有得到它的工作。任何帮助都将不胜感激!谢谢

下面是有问题的代码的简化版:

master=tkinter.Tk()
master.title("Not working")

a1b1c1 = PhotoImage(file = r"C:/users/jdavis319/documents/bushesoflove/BoLdraw/a1b1c1.png")
a1b1c2 = PhotoImage(file = r"C:/users/jdavis319/documents/bushesoflove/BoLdraw/a1b1c2.png")
a1b1c3 = PhotoImage(file = r"C:/users/jdavis319/documents/bushesoflove/BoLdraw/a1b1c3.png")
a1b2c1 = PhotoImage(file = r"C:/users/jdavis319/documents/bushesoflove/BoLdraw/a1b2c1.png")
a1b2c2 = PhotoImage(file = r"C:/users/jdavis319/documents/bushesoflove/BoLdraw/a1b2c2.png")

population = [a1b1c1, a1b1c2, a1b1c3, a1b2c1, a1b2c2]

populationbeta = []

populationbeta.append(population[0])

print(populationbeta)
结果是:“[]”

结果是:“[]”

对。这表明您有一个
PhotoImage
对象列表。如果需要文件名,可以在对象上使用
.cget('file')
cget
是获取配置选项值的常用tkinter方法

filenames = [image.cget('filename') for image in population]
或者,如果您不想使用列表理解来创建文件名列表,您可以在单个图像上这样做:

populationbeta.append(population[0].cget("file"))

实际上,您可以在几行或更多行(整个代码)中完成这项工作。基本上使用
a1b1c1.cget('file')
。这很有效!非常感谢!它确实为我提供了文件的完整地址——我认为没有任何简单的方法可以只提取文件名的相关部分,而不需要遍历整个字符串并提取最后的字符?@JasDavis:是的,很简单。看见