【问题标题】:image slide show using tkinter and ImageTk使用 tkinter 和 ImageTk 的图像幻灯片放映
【发布时间】:2019-12-02 03:48:48
【问题描述】:

我正在尝试制作图像幻灯片,但我无法让 ImageTk 模块工作

import tkinter as tk
from itertools import cycle
from ImageTk import PhotoImage

images = ["ffa1c83.jpg", "ffa4600.jpg", "faa4149.jpg", "f099e64.png"]
photos = cycle(PhotoImage(file=image) for image in images)

def slideShow():
  img = next(photos)
  displayCanvas.config(image=img)
  root.after(50, slideShow) # 0.05 seconds

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

我正在使用 python 3.7

我得到这个错误:

Traceback (most recent call last):
  File "C:\Users\cj\Desktop\code_stuff\slideshow\slide show V2\SlideShowV2.py", 
line 3, in <module>
    from ImageTk import PhotoImage
ModuleNotFoundError: No module named 'ImageTk'

【问题讨论】:

  • ImageTk 是模块PIL/pillow 的一部分 - 使用from PIL import ImageTk, Image
  • @furas 我试过了,得到了完全相同的错误代码
  • 你删除了from ImageTk import PhotoImage 吗?
  • 你必须删除from ImageTk import PhotoImage并使用from PIL import ImageTk, Image,然后你必须使用ImageTk.PhotoImage(Image.open(filename))
  • 因为你必须使用ImageTk.PhotoImage(Image.open(filename))

标签: python python-3.x image tkinter python-3.7


【解决方案1】:

ImageTk 是模块 PIL/pillow 的一部分

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

images = ["ffa1c83.jpg", "ffa4600.jpg", "faa4149.jpg", "f099e64.png"]
photos = cycle(ImageTk.PhotoImage(Image.open(image)) for image in images)

它被用来代替标准的tkinter.PhotoImage,后者无法读取.png,而在旧版本中,它甚至无法读取.jpg,它仅适用于.gif


顺便说一句:阅读PhotoImage 中的错误,当图像被分配给函数中的局部变量时,它会从内存中删除图像 - 请参阅文档PhotoImage 中的Note

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 2015-05-21
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多