关于python tkinter Canvas create_image无法显示图片

现象:

img

白色区域为Canvas(原本应该显示照片z=ik.Photoimage(image=cz))
代码:

import tkinter as tk
import sys as ss
import tkinter.filedialog as fi
import PIL as pl
import PIL.Image as ie
import PIL.ImageTk as ik
def jz():
    zd=fi.askopenfilename()
    cz=ie.open(zd)
    x=cz.width
    y=cz.height
    #hs=len(h)-1
    z=ik.PhotoImage(image=cz)
    #h.append(tk.Canvas(c,width=x,height=y,bg="#ffffff"))
    h=tk.Canvas(c,width=x,height=y,bg="#ffffff")
    h.place(x=20,y=20)
    h.create_image(0,0,anchor='nw',image=z)

c=tk.Tk()
a=tk.Button(c,text="新建",bd=0,command=jz).place(x=0,y=0)
c.mainloop()

报啥错误呢

tkinter和matplotlib两个库的整合,如有用请采纳

我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《【实战】——基于GUI编程的python股票量化交易策略之双均线策略》, 一起来围观吧 https://blog.csdn.net/weixin_47974364/article/details/123634884?utm_source=app&app_version=5.3.0&code=app_1562916241&uLinkId=usr1mkqgl919blen

在你的函数中把z定义为全局变量:global z