展开全部
img = ImageTk.PhotoImage(im)
看上面一句,我们需要关注的是PhotoImage这个方法,所以看下他的源码self.__photo = tkinter.PhotoImage(**kw)
发现了上面这一句
是的它调32313133353236313431303231363533e58685e5aeb931333365666136用了tkinter下面的PhotoImage方法class PhotoImage(Image):
"""Widget which can display colored images in GIF, PPM/PGM format."""
def __init__(self, name=None, cnf={}, master=None, **kw):
"""Create an image with NAME.
Valid resource names: data, format, file, gamma, height, palette,
width."""
Image.__init__(self, 'photo', name, cnf, master, **kw)
上面是tkinter.PhotoImage
可以发现PhotoImage这个类,继承自Imageclass Image:
"""Base class for images."""
_last_id = 0
def __init__(self, imgtype, name=None, cnf={}, master=None, **kw):
self.name = None
if not master:
master = _default_root
if not master:
raise RuntimeError('Too early to create image')
self.tk = getattr(master, 'tk', master)
明显,tkinter他是有检查master 这个东西的。
也就是下面这一句有没有写root = tk.Tk()
所以,当你把顺序换了以后,他就报错了。