Python 3.7,tkinter,jpg:无法识别图像文件中的数据

时间:2018-12-04 10:21:45

标签: python-3.x tkinter

我想在python3中寻求有关tkinter的帮助。 我似乎无法使用以下代码在标签中显示jpeg图像文件:

def changephoto(self):
    self.tmpimgpath = filedialog.askopenfilename(initialdir=os.getcwd())
    self.installimagepath.set(self.tmpimgpath)
    self.selectedpicture = PhotoImage(file=self.installimagepath.get())
    self.PictureLabel.configure(image=self.selectedpicture)

它可以很好地处理png图像,但是当我尝试加载jpg图像时,我只能得到以下错误:

_tkinter.TclError: couldn't recognize data in image file

我经历了所有类似的问题,但它们似乎都回答了同样的问题:“从PIL导入ImageTk,图像” 当我尝试这样做(目前,我正在尝试使用枕头btw)时,ImageTk似乎不可用。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

  1. 您必须安装PILpip install pillow

    如果pip未成功安装pillow,则可能需要尝试pip3pip3.7 (使用bash查看具有哪些选项)

  2. 您可以使用ImageTk打开图像:

    import os
    import tkinter as tk
    from tkinter import filedialog
    from PIL import ImageTk
    
    def changephoto():
       root = tk.Tk()
       PictureLabel= tk.Label(root)
       PictureLabel.pack()
       tmpimgpath = filedialog.askopenfilename(initialdir=os.getcwd())
       selectedpicture= ImageTk.PhotoImage(file=tmpimgpath)
       PictureLabel.configure(image=selectedpicture)
    

答案 1 :(得分:0)

Chuck G提供的解决方案有效。我不知道为什么我最初无法导入ImageTk,但是最终还是可以正常工作。

from PIL import ImageTk