Python tkinter中的随机图像循环
我正在尝试循环文件夹中的随机图像。到目前为止,我可以循环图像,但每次我尝试使用random.choice时,都会出现错误。下面是我没有随机导入的代码Python tkinter中的随机图像循环,python,tkinter,Python,Tkinter,我正在尝试循环文件夹中的随机图像。到目前为止,我可以循环图像,但每次我尝试使用random.choice时,都会出现错误。下面是我没有随机导入的代码 import tkinter as tk import glob root = tk.Tk() from PIL import ImageTk, Image root.geometry('600x600') pics = glob.glob("./imgs/*.png") photos = [random.choice(tk
import tkinter as tk
import glob
root = tk.Tk()
from PIL import ImageTk, Image
root.geometry('600x600')
pics = glob.glob("./imgs/*.png")
photos = [random.choice(tk.PhotoImage(file=x)) for x in pics]
label = tk.Label(root)
label.photos = photos
label.counter = 0
def changeimage():
label['image'] = label.photos[label.counter%len(label.photos)]
label.after(8000, changeimage)
label.counter += 1
label.pack(padx=10, pady=10)
changeimage()
root.mainloop()
错误
回溯(最近一次呼叫最后一次):
文件“/Users/ad/Documents/Python/Project\u tkinter/test1.py”,第148行,在
照片=[随机选择(tk.PhotoImage(file=x))用于图片中的x]
文件“/Users/ad/Documents/Python/Project\u tkinter/test1.py”,第148行,在
照片=[随机选择(tk.PhotoImage(file=x))用于图片中的x]
文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/random.py”,选择第288行
i=自身.(列(序号))
TypeError:“PhotoImage”类型的对象没有len()
您必须首先创建照片列表,然后选择单张照片
list_of_photos = [tk.PhotoImage(file=x) for x in pics]
single_photo = random.choice(list_of_photos)
但是,如果要循环此列表,则需要random.shuffle()
更改列表上的顺序,使文件以随机顺序排列
list_of_photos = [tk.PhotoImage(file=x) for x in pics]
random.shuffle(list_of_photos)
random.shuffle()
更改原始列表,但不返回新列表。如果您能提供回溯,将对我们有所帮助。嘿,不确定回溯是什么意思。我已经更新了代码,这样你就可以自己运行了。只需将文件夹路径替换为您自己的路径。您说您遇到了错误,这是什么意思?始终将完整的错误消息(从单词“Traceback”开始)作为文本(而不是屏幕截图)放在问题中(不是注释)。还有其他有用的信息。我在代码中没有看到random.choice
。显示产生问题的代码。啊!非常感谢。你说的有道理。在我的另一个项目中,我对字符串列表使用了random.choice,它成功了。我想这对文件夹中的图像也是一样的。谢谢你的澄清。学到了一些新东西:)
list_of_photos = [tk.PhotoImage(file=x) for x in pics]
random.shuffle(list_of_photos)