首页 > 解决方案 > 你如何在python中制作随机照片幻灯片

问题描述

我正在尝试在Python中制作随机幻灯片

当前工作代码:

import tkinter as tk
from itertools import cycle
from PIL import ImageTk, Image


with open('list.txt', 'r') as f:
    lines = f.read().strip('[]')
    images = [i.strip("\" ") for i in lines.split(',')]


photos = cycle(ImageTk.PhotoImage(Image.open(image)) for image in images)

def slideShow():
  img = next(photos)
  displayCanvas.config(image=img)
  root.after(1200, slideShow) 

root = tk.Tk()
root.overrideredirect(True)
width = root.winfo_screenwidth()
height = root.winfo_screenwidth()
root.geometry('%dx%d' % (1920, 1280))
displayCanvas = tk.Label(root)
displayCanvas.pack()
root.after(1000, lambda: slideShow())
root.mainloop()

我尝试通过更改img = next(photos)img = random.choice(photos) 我得到错误来随机化它NameError: name 'random' is not defined

完整的随机代码:

import tkinter as tk
from itertools import cycle
from PIL import ImageTk, Image
import random

with open('list.txt', 'r') as f:
    lines = f.read().strip('[]')
    images = [i.strip("\" ") for i in lines.split(',')]


photos = cycle(ImageTk.PhotoImage(Image.open(image)) for image in images)

def slideShow():
  img = random.choice(photos)
  displayCanvas.config(image=img)
  root.after(1200, slideShow) 

root = tk.Tk()
root.overrideredirect(True)
width = root.winfo_screenwidth()
height = root.winfo_screenwidth()
root.geometry('%dx%d' % (1920, 1280))
displayCanvas = tk.Label(root)
displayCanvas.pack()
root.after(1000, lambda: slideShow())
root.mainloop()

我应该如何正确地将幻灯片放映转换为随机放映?

标签: python

解决方案


我只会使用shuffle()作为 Python 标准库一部分的 random 。

import random
random.shuffle(images)

请记住,shuffle 可以正常工作并返回None


推荐阅读