python - 如何用Python制作随机照片幻灯片

标签 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:名称'random'未定义

完全随机代码:

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()

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

最佳答案

我只会使用 random 中的 shuffle() ,它是 Python 标准库的一部分。

import random
random.shuffle(images)

请记住,随机播放就地进行并返回None

关于python - 如何用Python制作随机照片幻灯片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59223959/

相关文章:

python - 根据 Pandas 中的日期范围计算定性值

python - 在python中的图像中的表格上创建边框

python - os.environ ['PATH' ] 与 echo $PATH 显示的系统路径不同

python - 欧拉计划 #641 Python 3.6 - Numpy

python - 如何在 Tensorflow 中实现逐元素一维插值?

python - 导入时找不到模块错误

python - 将函数映射到 pyspark RDD 后无法收集数据

python - Fargate 任务的资源 ARN 以允许连接到 Elasticsearch

Python:如何从一系列数字范围创建组合列表

android - Buildozer 执行最后一条命令失败