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: 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()
我应该如何正确地将幻灯片放映转换为随机放映?
解决方案
我只会使用shuffle()
作为 Python 标准库一部分的 random 。
import random
random.shuffle(images)
请记住,shuffle 可以正常工作并返回None
推荐阅读
- ios - Swift Keychain 无法从 viewDidLoad 中检索保存的密码以实现自动登录功能
- c# - 带有 SQL 传输的 NService 总线
- java - 如何修复 apache felix 中的已解决状态?
- javascript - 如何 document.querySelectAll 内联 CSS 样式?
- eclipse - 如何在 Eclipse RCP 应用程序中使用 mylyn 通知扩展?
- javascript - 复选框在映射功能中不起作用反应js css
- xcode - High Sierra 和 Mojave 操作系统
- python-3.x - 分组并计算时间戳的差异
- c - 将随机元素分配给函数中的 int 2D 矩阵时,如何避免 C 中的 SIGSEV 分段错误?
- maven - 如何使用 NetBeans 将额外的依赖项添加到 Maven Web 应用程序资源(WAR)项目到 Maven 存储库?