Python tikinter.PhotoImage和Pil.ImageTk.PhotoImage的PhotoImage有什么不同

Python tikinter.PhotoImage和Pil.ImageTk.PhotoImage的PhotoImage有什么不同,python,tkinter,Python,Tkinter,我按照教程在ImageTK GUI上设置图像打开按钮 from tkinter import * from tkinter.ttk import * import cv2 from PIL import ImageTk,Image # creating tkinter window root = Tk() # Adding widgets to the root window Label(root, text = 'GeeksforGeeks', font =( 'Verda

我按照教程在ImageTK GUI上设置图像打开按钮

from tkinter import * 
from tkinter.ttk import *
import cv2
from PIL import ImageTk,Image
# creating tkinter window 
root = Tk() 
  
# Adding widgets to the root window 
Label(root, text = 'GeeksforGeeks', font =( 
  'Verdana', 15)).pack(side = TOP, pady = 10) 
  
# if use from tkinter.PhotoImage gor problem****** 
# photo = PhotoImage(Image.open("icon/homebutton.jpeg")) # **** Rise Problem 
# Use from Pil
photo = ImageTk.PhotoImage(Image.open("icon/homebutton.jpeg"))  

Button(root, text = 'Click Me !', image = photo).pack(side = BOTTOM) 
mainloop() 
如果我在注释“上升问题”的行中使用PhotoImage函数,我就得到了问题

TypeError: __str__ returned non-string (type JpegImageFile)

Tkinter的
PhotoImage
需要一个关键字参数-
file=
指定打开的文件,或者
data=
指定原始图像数据。当您尝试使用位置参数时,它会被解释为图像的内部名称,而这通常不是您所关心的。在任何情况下,它都不会将PIL
图像
作为参数。PIL的
PhotoImage
与PIL
Image
s一起工作,并且支持的图像文件格式比Tkinter直接支持的格式多得多。